关于IT运维技术的
最佳实践博客网站

ssh免密码登陆远程服务器

服务器密匙认证登陆(免密码登陆)不仅仅可以提高处理一些服务器日常事务的效率,也是服务器安全防御的第一步,因为密匙认证需要依靠密匙,首先创建一对密匙(包括公匙和密匙,并且用公匙加密的数据只能用密匙解密),并把公匙放到需要远程服务器上。这样当登陆远程服务器时,客户端软件就会向服务器发出请求,请求用你的密匙进行认证。服务器收到请求之后,先在你在该服务器的宿主目录下寻找你的公匙,然后检查该公匙是否是合法,如果合法就用公匙加密一随机数(即所谓的challenge)并发送给客户端软件。客户端软件收到 “challenge”之后就用私匙解密再把它发送给服务器。因为用公匙加密的数据只能用密匙解密,服务器经过比较就可以知道该客户连接的合法性。

1、生成密钥。在终端下执行命令:

[私钥 (id_rsa) 与公钥 (id_rsa.pub)]

ssh-keygen -t rsa

DB9FF369-C5E9-4A18-BCCE-BA17581A4979

一路回车,各种提示按默认不要改。注意:提示enter passphrase的时候,不要输入,因为你本来就想少打一次密码的,这里如果设置了用密码保护私钥,那登陆的时候还是要输密码,就白做了。

有些场景也需要单独给私钥或者公钥设置密码

ssh-keygen -p -f 公钥或者私钥文件

2、查看.ssh目录下有个文件,一个公钥(id_rsa.pub),一个私钥(id_rsa)

wubindeMBP:~ nibuw$ ls .ssh/
id_rsa id_rsa.pub known_hosts

3、把公钥传送到远程服务器。

#使用SCP命令
scp .ssh/id_rsa.pub root@115.28.166.234:/root/.ssh/
使用ssh-copy-id命令
#复制公钥到无密码登录的服务器上,22端口改变可以使用下面的命令
#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
ssh-copy-id -i ~/.ssh/id_rsa.pub root@115.28.166.234

4、把id_rsa.pub的内容加入到服务器端的默认验证文件authorized_keys

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

5、修改sshd_config

UseDNS 选项打开状态下,当客户端试图登录SSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施,但一般我们的是动态IP不会有PTR记录,打开这个选项不过是在白白浪费时间而已,

#编辑sshd_config文件
vi /etc/ssh/sshd_config

UseDNS no
#禁用密码验证
PasswordAuthentication no
#启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes
#指定公钥数据库文件
AuthorsizedKeysFile .ssh/authorized_keys

#使用 sed 命令一键替换
sed -i "s/^PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config
sed -i "s/^#RSAAuthentication.*/RSAAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys/g" /etc/ssh/sshd_config

6、需要重启服务器上的SSH服务

#RHEL6/CentOS6系统
service sshd restart
#REHL7/Centos7系统
systemctl restart sshd.service
#ubuntu系统
service ssh restart
#debian系统
/etc/init.d/ssh restart

重启SSH服务前建议多保留一个会话以防不测

6、本地登陆远程服务器(指定私钥路径)

wubindeMBP:~ nibuw$ ssh -i .ssh/id_rsa root@115.28.166.234
The authenticity of host '115.28.166.234 (115.28.166.234)' can't be established.
RSA key fingerprint is 1a:d0:d4:ef:93:e1:74:1e:f6:c6:67:8b:e1:86:c0:36.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '115.28.166.234' (RSA) to the list of known hosts.
Last login: Tue May 26 01:16:40 2015 from 171.221.147.50

Welcome to aliyun Elastic Compute Service!

特别注意:公钥要放在登陆服务器所用的账号的家目录下,比如你用 abc登陆远程服务器,就要把公钥 放到 /home/root/.ssh/下, authorized_keys文件也是在这个目录下。authorized_keys 的权限应该是600。

赞(1)
未经允许不得转载:菜鸟HOW站长 » ssh免密码登陆远程服务器
分享到: 更多 (0)

1
留下你的脚印

0 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Recent comment authors
  订阅  
最新 最旧 得票最多
关注动态