1. windows下的ssh客户端设置
1.1 设置密钥登录
这里以SSH secure shell 3.2.9为例。 首先确保服务器ssh服务已启动,用户能够正常登录,然后配置客户端,过程如下:
(1) 运行 SSH Secure Shell 工具中的“Secure Shell Client ”,选择菜单中“Edit”-> “Setting”,在打开的窗口左侧依次选择“Global Settings”->“User Authentication”->“Keys”,然后看到如下画面。注:第一次使用时,Private Key file是空的。
(2) 点击“Generate New”,在打开的窗口中点击“Next”弹出生成密钥的画面,选择 “RSA”和 “2048”,然后点击“Next”,稍等一会,会计算一个密钥。
(3) 看到如下图,参照图片中的内容进行填写,比如key File填写为castor_key,这个无所谓,不要跟其它key重复就好了。
在Passphrase中填写一个密码,这个是保护本地私有密钥的密码,也就是说,即使有人盗用了你的计算机,没有这个密码,也仍然不能使用你的密钥。注意,这个不是服务器上用户密码。点击下一步,生成密钥,位置在C:\Documents and Settings\”用户名”\Application Data\SSH\UserKeys目录下。这个目录应该备份出来,拷贝到U盘或者其它设备上,以便以后重装系统仍然可以采用。
(4) 密钥生成后,应该把公钥上传到服务器。有两种方式,第一种方法直接选择菜单中“Edit”-> “Setting”,在打开的窗口左侧依次选择“Global Settings”->“User Authentication”->“Keys”,然后点击“Upload”,出现如下画面。此时,SSH Client应该处于登录状态。
注意:第二项应该改为.ssh,而非缺省的.ssh2,否则上传会失败。
第二种方法是使用上传工具,手动把公钥文件,比如刚刚生成的castor_key.pub上传到需要登录的用户HOME目录下的.ssh目录中。
(5) 到服务器上设置。
接着要做一些手工的操作,在命令行界面里,输入如下命令: (左脚注意前面的$符号不是命令,只是个提示符)
$ cd .ssh/
$ ls -l
会至少看到你刚才生成的 .pub 公钥文件和一个 authorization 认证配置文件。如果没有你刚才起的名子的文件,那就有问题,检查上面的过程。
接着做下面的命令,假设我生成的是castor_key.pub
$ ssh-keygen -i -f castor_key.pub >> authorized_keys
然后,删除刚才生成的文件:
$ rm -rf castor_key.pub
$ rm -rf authorization
2. Linux下的设置
2.1 SSH版本1设置
ssh-keygen -t rsa1
生成密钥过程中,会提示私钥的保护口令,可以为直接键入回车,即不需要保护,以后就可以不需要任何密码登录服务器。
将生成私钥文件identity和公钥文件identity.pub。将identity.pub上传到服务器要登录的用户HOME目录下的.ssh目录中,并将identity.pub的内容添加到authorized_keys中,比如:
cat identity.pub >> authorized_keys
2.2 SSH版本2设置
ssh-keygen -t rsa
生成密钥过程中,会提示私钥的保护口令,可以为直接键入回车,即不需要保护,以后就可以不需要任何密码登录服务器。
将生成私钥文件id_rsa和公钥文件id_rsa.pub。将id_rsa.pub上传到服务器要登录的用户HOME目录下的.ssh目录中,并将id_rsa.pub的内容添加到authorized_keys中,比如:
cat id_rsa.pub >> authorized_keys
2.3 总结
为了兼容服务器的版本,最好生成rsa1和rsa2两个版本的公钥,分别把identity.pub和id_rsa.pub都加入到服务器的authorized_keys文件中。如果仅按照默认方式生成密钥,实际上就是SSH 版本2的方式,将生成id_rsa和id_rsa.pub。直接使用ssh命令登录有些服务器时会失败,必须加选项-2,比如ssh -2 cdev02.ihep.ac.cn。
3 设置服务器只允许密钥
编辑/etc/ssh/sshd_config,把PasswordAuthentication yes修改为PasswordAuthentication no,然后重新启动sshd服务。
结束语:目前还没有找到如何把windows下的SSH Secure shell生成的密钥导入到Linux下的用户使用,这样一个用户就仅需要一个密钥,而不是在Linux和Windows下分别生成一个。