SSH 密钥登录
一、什么是SSH?
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个
二、密钥登录
1.本地机器生成密钥 ssh-keygen -t rsa //这里采用rsa算法
# 通过 ssh-keygen 可以生成需要的证书
# 根据提示一路按 RETURN(ENTER) 即可
# 默认情况下会生成 id_rsa 和 id_rsa.pub
# id_rsa 为私钥,id_rsa.pub 为公钥
ssh-keygen -t rsa
2.把本地copy到远程服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.85.163
3.查看是否copy成功,登录到远程服务器上查看authorized_keys文件中是否有了上传的公钥
vi /root/.ssh/authorized_keys
4.修改修改 SSH 配置文件
vi /etc/ssh/sshd_config
去掉下面前面的注释符
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5.重启ssh服务
# RHEL/CentOS 系统
service sshd restart
# Ubuntu 系统
service ssh restart
# Debian 系统
/etc/init.d/ssh restart
6.启动服务后报错
[root@Server-rm8glb ssh]# service sshd restart Redirecting to /bin/systemctl restart sshd.service Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
或者使用sshd -t 查看错误原因和systemctl status sshd.service效果类似:找到原因后,把相关的配置注释掉即可
7.查看sshd服务状态
systemctl status sshd.service
参考:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
作者:guanbin —— 纵码万里千山
出处:https://www.cnblogs.com/guanbin-529/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。