如何设置服务器到服务器的SFTP,使用公钥身份验证而不是用户帐户和密码?
在客户端,您需要生成其公钥并将其添加到服务器的授权密钥列表中。
以下是您可以使用的命令。
在客户端机器上
ssh-keygen -t dsa -f id_dsa
mv id_dsa* ~/.ssh/
scp ~/.ssh/id_dsa.pub USER_NAME@SERVER:~/.ssh/HOST_NAME.key
在服务器上
cat ~/.ssh/HOST_NAME.key >> ~/.ssh/authorized_keys2
记得
chmod 700 .ssh
chmod 600 authorized_keys
这是一个适用于Windows用户的解决方案
我在Windows上遇到了类似的问题,所以我使用了来自http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html的Putty。
如果您需要生成公钥,则可以使用: http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
然后,当您想要自动化批处理从FTP服务器下载Pageant以将私钥加载到会话中时, http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe
然后使用PSFTP连接并执行操作 http://the.earth.li/~sgtatham/putty/latest/x86/psftp.exe
这里是批处理的示例代码:
!--Loading the key to session--!
@C:\pageant.exe "C:\privatekey.ppk"
!--Calling the PSFTP.exe with the uaser and sftp address + command list file--!
@C:\psftp user@your.server.address -b C:\sftp_cmd.txt
命令列表文件(sftp_cmd.txt)将会像这样:
mget "*.*" !--downloading every thing
!--more commands can follow here
close
ssh-copy-id
命令来代替你之前使用的scp
+cat
组合操作。该命令能够更加方便地实现同样的功能,且不会改变原有的意思。 - ephemient