A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 小蜀哥哥 于 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 命令去连接服务器就直接能免密吗登录了,是不是很方便啊。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马