ssh自动登录配置
2012-06-01 10:22:12 阿炯

ssh输密码登录的过程很不方便,于是我们就需要布署密匙的方式来自动验证登录。

原理:通过ssh的key生成工具,我们会得到一个公匙,一个私匙,公匙我们需要保存在服务器端,私匙我们保存在客户端 ,在客户端通过ssh客户端软件连接到服务器上,通过成对密匙较验身份信息,获取授权。

下面是简单的配置方法

如果你使用的是linux操作系统,我们可以用ssh-keygen工具生成一对秘匙,它包含私匙 id_rsa和公匙id_rsa.pub。当在询问你输入密码时直接回车。
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hto/.ssh/id_rsa): 
Created directory '/home/hto/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hto/.ssh/id_rsa.
Your public key has been saved in /home/hto/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

生成的密匙默认放在主目录下面的'.ssh'目录下,~/.ssh/id_rsa和~/.ssh/id_rsa.pub这两个文件。

在windows下可以用putty自带的PUTTYGEN.EXE工具生成秘匙,xshell可以从'Tools->User Key Mangager'进行操作。

我们用上传工具,把id_rsa.pub 密匙传到远程服务器端的/root目录下面。
1.sftp、scp、ssh-copy-id上传
2.cat .ssh/id_rsa.pub | ssh user@remoteserver 'cat >> .ssh/authorized_keys' 当然'.ssh'目录在存在。

接下来我们用ssh客户端软件登录远程服务器,在远程服务器端执行下面命令。
mkdir ~/.ssh
chmod 700 ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

到这里,密匙己经布好了。你可以通过这个安装好的密匙,免输入密码即可登录shell了。

如果你用了putty的key导出工具导出公匙,就不能直接这样做了,你要用ssh自带的工具,导入公匙。
ssh-keygen -i -f ~/id_rsa.pub >> ~/.ssh/authorized_keys

是在linux客户端下面,那么我们就要确保id_rsa.pub和id_rsa位于~/.ssh/目录下,这样才可以使用这个Key自动登入服务器。
在ssh工具包中,已经包含了用于将公有key文件复制到它将要无认证登录的机器上。
$ ssh-copy-id --help
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

$ ssh-copy-id -i id_rsa.pub web@192.168.20.179
web@192.168.20.179's password:
Now try logging into the machine, with "ssh 'web@192.168.20.179'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.


更多关于key自动登录问题请参见:ssh-key自动登录问题集