您的位置:首页 > 其它

怎样使用SSH不输入密码登录远端服务器?

2014-01-13 16:22 411 查看

一、单向无密码访问

以服务器A访问服务器B为例,进行无密码访问,配置如下:

1.生成RSA密钥对

在终端输入如下命令(停止的地方直接回车):

[firekyrin@firekyrin ~]$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/firekyrin/.ssh/id_rsa):

Created directory ‘/home/firekyrin/.ssh’.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/firekyrin/.ssh/id_rsa.

Your public key has been saved in /home/firekyrin/.ssh/id_rsa.pub.

The key fingerprint is:

9f:af:c2:6c:cd:62:6b:24:42:a7:35:6b:bb:5f:21:95 firekyrin@firekyrin.com

The key’s randomart image is:

+–[ RSA 2048]—-+

|                 |

|           .     |

|          E      |

|    . +  .       |

|   . + oS .      |

|    o + .o o     |

|     o * o+      |

|      . O.o.     |

|      .*o+…    |

+—————–+

执行完之后,会在/home/firekyrin/.ssh目录下生成两个文件:id_rsa和id_rsa.pub,其中id_rsa是私钥,保留在本机(服务器A);id_rsa.pub是公钥,需要上传到远程服务器(服务器B)。

2.上传公钥

(1)在远程服务器B相应帐号下建立.ssh目录,并设置权限

cd /root/

mkdir .ssh

chmod 700 .ssh

(2)将公钥从本机上传到远程服务器B

假设服务器B的IP地址是:

[firekyrin@firekyrin ~]$ scp .ssh/id_rsa.pub root@192.168.1.138:/root/.ssh/authorized_keys

The authenticity of host ’192.168.1.138 (192.168.1.138)’ can’t be established.

RSA key fingerprint is c1:3b:90:a7:39:a1:dc:47:18:04:91:fd:6e:ed:fa:d9.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ’192.168.1.138′ (RSA) to the list of known hosts.

root@192.168.1.138′s password:

id_rsa.pub

上传的时候,会将id_rsa.pub改名为authorized_keys;上传成功后,远程服务器B会被添加到.ssh/known_hosts列表中。

3.测试

上传完毕之后,就可以直接从本机登录到远程服务器B了:

[firekyrin@firekyrin .ssh]$ ssh root@192.168.1.138

Last login: Wed Dec  5 10:45:23 2012 from 192.168.1.21

[root@localhost ~]#

二、多服务器之间无密码访问

多服务器之间五米没访问的原理以单向访问是一样的,但设置步骤稍有不同。步骤如下:

1.生成密钥对

在每台服务器上执行以下命令,生成密钥对:

$ssh-keygen -t rsa

2.上传公钥

将每台服务器上生成的公钥复制到需要无密码登录的服务器上。以三台服务器(192.168.1.137,192.168.1.138,192.168.1.139)为例,他们之间需要相互访问,则在每台服务器生成密钥对后,执行ssh-copy-id命令,将公钥复制到其他两台服务器。以192.168.1.137操作为例,其他服务器操作方法相同:

[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub jack@192.168.1.139

The authenticity of host ’192.168.1.139 (192.168.1.139)’ can’t be established.

RSA key fingerprint is ea:26:74:0b:4a:bd:cc:55:52:e6:df:66:55:69:5f:04.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ’192.168.1.139′ (RSA) to the list of known hosts.

jack@192.168.1.139′s password:

Now try logging into the machine, with “ssh ‘jack@192.168.1.139′”, and check in:

~/.ssh/authorized_keys

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

3.测试

配置完成后,选择一台服务器登录另一台,如果能够成功登录,说明配置成功。

[root@localhost ~]# ssh jack@192.168.1.139

Last login: Fri Dec  7 05:39:41 2012 from 192.168.1.137

[jack@jack-test ~]$

三、附录:配置不成功的可能

如果SSH免登录配置不成功,可以从以下几个方面尝试修改:

1.检查

在服务器上检查~/.ssh文件夹权限为755可访问,检查~/.ssh/authorized_keys为600可访问,再次连接。

2.在服务器上尝试修改/etc/ssh/sshd_config中的:

PasswordAuthentication no

重启sshd:

sudo service sshd restart

再尝试连接。

3.端口占用:

在~/.ssh/config添加:

Host server

Hostname ip

Port 10022

或者直接在命令中添加:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 10022 firekyrin@192.168.1.137

执行命令后再次尝试。

原文地址:http://www.firekyrin.com/archives/2056.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh