设置SFTP使用公钥身份验证

13

如何设置服务器到服务器的SFTP,使用公钥身份验证而不是用户帐户和密码?

3个回答

12

在客户端,您需要生成其公钥并将其添加到服务器的授权密钥列表中。

以下是您可以使用的命令。

在客户端机器上

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

5
请使用 ssh-copy-id 命令来代替你之前使用的 scp + cat 组合操作。该命令能够更加方便地实现同样的功能,且不会改变原有的意思。 - ephemient
不错,就像ssh-copy-id一样。我在HP-UX上,希望它已经安装了。 - user290
哦,对了...我忘记并非全世界都使用OpenSSH。很遗憾。 - ephemient
我能否使用为已知/配置的客户端生成的私钥从未知机器登录以与服务器通信?我的意思是,这个私钥是否可移植并且可以在紧急情况下用于从其他机器验证自己到服务器? - Rajat Gupta

3

记得

chmod 700 .ssh

并且
chmod 600 authorized_keys

1

这是一个适用于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

现在,您只需要在计划任务中安排它 *但我希望它像Unix的cron job一样简单....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接