【原创】UBUNTU配置SSH无密码登录本机或远程主机

blogdaren 2015-09-28 抢沙发 2204人次

由于环境问题,本文以UBUNTU + SSH无密码登录本机为实验举例说明:(远程主机一个道理哈)

首先博主说明几个注意事项:

A. /etc/ssh/下有两个配置文件,一个是ssh_config(这个是SSH客户端的配置文件); 一个是sshd_config(这个是SSH的服务端配置文件)

B. /etc/ssh/ssh_config 配置里有个配置项: IdentityFile ~/.ssh/id_rsa, 首先这个只有SSH无密码登录本机时会用到,然后呢这个决定了我们在生成密钥时应该存储的文件名(参见后续步骤4),注意必须保持一致哦,否则捣鼓半天无法生效,你想啊,文件名不一致的话,服务端根据客户端配置就找不到私钥文件啦

C. ubuntu下SSH服务标识名是SSH 而不是 SSHD(二进制程序是SSHD没问题哈),所以服务操作命令和CENTOS有些许差异(见后续步骤2)

1. 以root登录修改配置文件:vim /etc/ssh/sshd_config,将其中三行的注释去掉,如下:

11.png

2. 重启ssh服务:/etc/init.d/ssh restart 或者 service ssh restart

3. 在未配置DSA校验的情况下,用ssh连接主机是需要输入密码的,如下:

22.png

4. 生成密钥对

如上图,执行ssh -p 33 localhost 后会停留在下一行等待您输入root用户的登录密码。

那么如何才能让主机在ssh连接本机时无需输入密码自动验证后登录本机呢?

首先,执行命令 ssh-keygen -t dsa 生成密钥对,如下:

33.png

如上图,密钥文件按照默认方式会在主目录/home/root/.ssh/ 目录中生成一对密钥,分别为 id_dsa(私钥) id_dsa.pub公钥),如下图:

44.png

5.分发公钥文件到authorized_keys

根据配置文件/etc/ssh/sshd_config中的AuthorizedKeysFile项的取值:.ssh/authorized_keys,公钥需要导入到该文件中才能实现校验,如下:

55.png

关于文件authorized_keys权限有必要说明一下:

UBUNTU默认新生成的文件权限为:-rw-rw-r--,即自己和群组用户都可以重写该文件,这被认为是不够安全的。如上图,由于此前我的主机上并未存在authorized_keys文件,现在由于重定向输出新建了该文件,因此该文件的默认权限为-rw-rw-r--仍旧 不够安全。需把群组中的w权限去掉。可使用命令:chmod 644 authorized_keys。网上的资料中,都是直接chmod 600 authorized_keys,即群组和其他用户连读取文件内容的权限都没有,当然这样是最安全的,但是系统只要求到除了自己之外其他所有用户均不能改动文件就可以了。

6.测试无密码登录本机

66.png

如上图,已经能够使用ssh无密码登录本机了。那么如何让它无密码登录到远程主机中呢?

原理是:利用ssh-copy-id命令分发公钥文件id_dsa.pub的内容到其他你想远程主机上既可以啦。

比如无密码远程登录远程主机 manon.host,执行命令:

ssh-copy-id ~/.ssh/id_dsa.pub root@manon.host  

接着输入manon.host主机的root用户密码,即可将公钥发送到manon.host主机的authorized_keys文件中

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】UBUNTU配置SSH无密码登录本机或远程主机

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting