LINUX下的ssh认证,不用密码登陆另一台机器

在linux下使用ssh认证,不输入密码访问另一台机器,在工作中由于常用到ssh登录其他机器,所在每台机器上做了ssh认证,这样就不用每次都输入繁琐的密码。

有两台机器:server_1 和 server_2
账号都为:work
转到work账号下:su - work
运行:ssh-keygen -d (一路回车下去 )
命令输出为:
Enter file in which to save the key (/home/work/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/work/.ssh/id_dsa.
Your public key has been saved in /home/work/.ssh/id_dsa.pub.
The key fingerprint is:
32:21:e1:3b:7d:6e:de:4b:39:da:af:38:fe:90:40:61 work@server_1.server.com

在/home/work目录下就产生了.ssh的隐含目录,进入些目录下产生两个文档:
id_dsa     ------- 私钥文档
id_dsa.pub ------- 公钥文档

将id_dsa.pub复制一份文档名为: authorized_keys
并将 authorized_keys 的属性改为 600 即文档所属用户有读和写的权限,组用户和其他用户禁止读写,用命令:

cp id_dsa.pub authorized_keys
chmod 600 authorized_keys

同样在server_2上做以上操作,下一步就实现真正的ssh认证了:
将server_1上/home/work/.ssh目录下的id_dsa.pub公钥文档拷到server_2的/home/work/.ssh目录下(注意:不要覆盖掉server_2的id_dsa.pub,拷时要改名)如:
代码:

[work@server_1 .ssh]$ scp id_dsa.pub work@server_2:.ssh/server_1.pub


在server_2的/home/work/.ssh目录下就有了如下文档:
authorized_keys
id_dsa
id_dsa.pub
server_1.pub

用命令:
代码:

cat server_1.pub >> authorized_keys
(注意一定要用追加操作 ">>" 不能用 ">")

这样server_1到server_2的ssh认证就做好了。在server_1上用命令:
代码:

ssh work@server_2
就直接登录到server_2上,而不用输入密码了。

server_2到server_1的认证同上操作即可。


=========================================

使用SSH证书(不要密码)登陆远程服务器
由于工作关系,我经常需要在非常不同的Linux服务器上转上转去,原来每次登陆,系统都会提示你输入密码,这的确是一件很烦的事情,特别是你在需要对好几台机器工作的时候。后来,我学会了用SSH证书认证来取代普通的密码认证,这样子我就不用每次都输入密码了。OpenSSH允许 远程执行命令,如果再加上证书使用,那就我就可以运行一些远程控制的脚本去控制许多许多机器,这个对我的工作非常有用。比如说,在需要在100台机器上添加许多相同的用户。。。

闲话少说,下面我们正式来创建证书:
首先,我们要给远程服务器创建一个公钥(public key)。在你的Linux系统上打开一个命令终端,运行如下命令:

# ssh-keygen -t rsa  (这里也可以将RSA改成dsa,)
Generating public/private rsa key pair.
Enter file in which to save the key (/home/calvin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/calvin/.ssh/id_rsa.
Your public key has been saved in /home/calvin/.ssh/id_rsa.pub.
在这一步里,系统将自动生成一个公钥(public key)并保存在/home/calvin/.ssh/id_rsa.pub这个文件里面。在上面的命令执行过程中,我们只需要一直敲回车直接使用默认值就好了(如果你想具体了解,可以去看man page,也可以私下跟我讨论)。

接下来,我们要将这个公钥(public key)复制到远程机器上面去,以前这是一个比较麻烦的事,但是,现在我们只要一个命令就可以搞定:

# ssh-copy-id -i /home/calvin/.ssh/id_rsa.pub username@@remoteserver.com
用自己实际的用户名与服务器地址取代username和remoteserver.com(下同),也可以直接填服务器的IP。
在这里,你可以再试下ssh到远程服务器,应该是不会再提示要密码而直接登陆进去了。

当然,如果你的机器没有ssh-copy-id这个命令,我们也可以使用传统的方法:

# scp ~/.ssh/id_rsa.pub [email protected]:/home/username
然后,登陆到远程机器上进行下一步的操作:

# ssh [email protected]
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
接下来,我们要给~/.ssh/authorized_keys correctly这个文件设置正确的权限(权限不对,证书会被拒绝)

# chmod 644 ~/.ssh/authorized_keys
或者设置成只读
# chmod 400 ~/.ssh/authorized_keys


authorized_keys  600  且注意组信息

猜你喜欢

转载自haiouc.iteye.com/blog/1605489
今日推荐