本帖最后由 小蜀哥哥 于 2019-8-1 13:09 编辑
Ubuntu 实现 SSH 免密登录
![]()
前言
SSH,又称作 安全Shell,他是 UNIX/BSD/Linux 常见的一种终端访问协议,也支持一些数据传输和命令执行。
通常,我们需要通过 ssh 命令去访问我们自己的服务器,直接进入对应账号的终端界面,进行操作,SSH 协议非常安全和可靠,而且协议规范一直沿用至今。
SSH 流行起来后,OpenBSD 组织就开发了一套在 GNU 下可以部署的 SSH 服务器端,以便于非 UNIX/BSD 这些商业系统使用,常规的 GNU/Linux 系统下使用的其实都是 OpenSSH 服务器与客户端。
准备
首先,如果是云服务器,就已经预装了 openssh-server,就不需要安装了,任何一个常规的 Linux 发行版,也都预装了 openssh-client 客户端,直接通过 ssh 命令就可以访问开启了 SSH 的服务器。
[Shell] 纯文本查看 复制代码 # 常规写法。
ssh 172.0.0.1 -l root
# 便捷写法。
ssh [url=mailto:root@172.0.0.1]root@172.0.0.1[/url]
当输入完连接命令后,就会拿到服务器的公钥,并询问是否继续使用此公钥访问。
接下来输入:yes(不可以只输入 y)就可以进入输入密码环节,然后输入对应用户正确的密码即可登录。
但是,如果是自己部署的服务器或者本地主机,本身是没有配置 openssh-server 服务的,需要手工安装。
[Shell] 纯文本查看 复制代码 apt install openssh-server
这样,会有一个 sshd 的守护进程在运行。
通过上面的访问方式就能访问到你的服务器了。
但是,有一个问题,就是每次登陆服务器都要输入密码还是很不方便。
能不能有什么办法直接就能登录不用输入密码,只需要确认身份就行呢?
答案当然是可以的。
配置服务器
首先找到,ssh 的配置路径,并修改配置。
[Shell] 纯文本查看 复制代码 # 通过 vi 去修改配置文件。
sudo vi /etc/ssh/sshd_config
# 里面有一行叫做
#PermitRootLogin without-password
# 将左边的 # 号去掉,并修改为 yes
PermitRootLogin yes
创建密钥
[Shell] 纯文本查看 复制代码 ssh-keygen -t rsa -P ''
这样就能快速产生一个没有被加密的本地私钥并以 RSA 作为加密算法。
具体路径在:~/.ssh/ 下
上传密钥
然后,只需要把你的公钥,复制到服务器的 ~/.ssh/authorized_keys 文件中,注意,一定是公钥,只用于传输加密。
[Shell] 纯文本查看 复制代码 scp .ssh/id_rsa.pub 172.0.0.1:~/.ssh/authorized_keys
总结
上面的步骤完成后,下一次直接 ssh 命令去连接服务器就直接能免密吗登录了,是不是很方便啊。
|