所以我期望在两台服务器之间设置ssh私钥/公钥,用于sftp(最终使用sftp执行lftp – 但每次只能执行一个步骤)。
我已经创build了私钥和公钥,并且发现为了使用它们,私钥必须是拥有的,并且只能由用户连接才能读取。
问题是,我连接的用户没有任何服务器上的/ home /目录(只存在于远程服务器上),所以当我尝试chown ,我得到chown: invalid user: {userName} -因为它不存在于本地。
任何人都可以提出一个解决办法吗?
– 编辑 –
我在两台服务器上都使用了getent passwd ,并且发现用户只存在于我所服务的服务器上 。 所以当我以该用户的身份连接( sftp weirdUser@remoteHost )时,如何使用私钥/公钥来执行此操作?
在本地服务器上需要一个~/.ssh/config文件,这个文件会将您的密钥与远程服务器上的用户相关联,例如:
Host yourremoteserver User weirduser IdentityFile /home/mylocaluser/.ssh/id_rsa
如果要为weirduser @ yourremoteserver创build唯一的密钥,请在ssh-keygen上使用-f选项:
ssh-keygen -t rsa -b 1024 -f weirduser
并用~/.ssh/configreplace~/.ssh/config文件中的IdentifyFile行:
IdentityFile /home/mylocaluser/.ssh/weirduser
无论您决定使用哪个密钥(默认id_rsa或weirduser),您都需要将相应的.pub文件的内容插入到远程服务器上的weirduser的authorized_keys 。 在你完成你的configuration文件设置后,尝试(它会提示input远程密码,然后将.pub文件复制到正确的authorized_keys ):
ssh-copy-id weirduser@yourremoteserver
(或者你可以手动做到这一点)
你需要创build用户SSH私钥/公钥只是另一种authentication方式,而不是密码authentication。
因此,您需要创build允许使用公用密钥对的用户http://www.tecmint.com/add-users-in-linux/
创build用户,然后你可以CHOWN该用户。