【Linux】之 SSH 安全登录

一、前言


SSH(Secure Shell) 是由 IETF(The Internet Engineering Task Force)制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过 SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

  • SSH 之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。
  • SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现,比如 OpenSSH。

常用的 SSH 登录方式有两种:

  • 用户名密码登录;
  • 秘钥登录。

下面我们分别介绍这两种登录方式。


二、用户名密码登录


1、开启 ssh 密码登录

想要使用用户名密码登录,需要开启 SSH 的用户名密码登录:

# 编辑 sshd_config 配置文件
[root@localhost ~] sudo vim /etc/ssh/sshd_config
# 修改内容-开启密码登录
PermitRootLogin yes 
PasswordAuthentication yes

# 重启 sshd 服务
[root@localhost ~] sudo systemctl restart sshd

2、使用账号密码登录

用户名密码登录比较简单,使用一条命令即可,命令格式为:ssh 用户名@服务器地址

ssh root@192.168.56.10

或者使用参数形式:

# -l 参数指定用户名
ssh 192.168.56.10 -l root

然后就会提示输入密码:

root@192.168.56.10's password: [输入你的密码]

注意:密码的输入是看不到输入的内容的,所以输入时需要小心一点。

如果是第一次登录远程主机,系统会提示远程主机真实性问题:

The authenticity of host '192.168.56.10 (192.168.56.10)' can't be established.
ECDSA key fingerprint is SHA256:pWjagKiaaK5EPq9NDFJFxeZ4D6IROBxhjjjABHidwcE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

直接输入 yes 即可,这时系统会提示远程主机被添加到已知主机列表(可以在 .ssh 目录下的 known_host 文件中编辑修改信任主机列表):

Warning: Permanently added '192.168.56.10' (ECDSA): to the list of known hosts.

注意:由于 SSH 服务默认使用的是 22 端口,所以,如果远程主机使用了其它端口,我们需要使用 -p 选项指定端口:

ssh -p 1234 root@192.168.56.10 

三、秘钥登录


我们知道 SSH 登录是用的 RSA 非对称加密的,所以我们在 SSH 登录的时候就可以使用RSA密钥登录,SSH 有专门创建 SSH 密钥的工具 ssh-keygen

1、生成秘钥

直接使用 ssh-keygen 命令创建密钥对:

[root@localhost ~] ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):【密钥生成的路径】
Enter passphrase (empty for no passphrase):【密钥密码】
Enter same passphrase again:【确认密码】
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:4KTfr1xD0bdtTUoYWrFnSu0DWhlK34vaVD30G8bBsto Administrator@20-1-20201109MU
The key's randomart image is:
+---[RSA 4096]----+
|          . =..o |
|         . * Xooo|
|      o   + X @=+|
|     + .   = %.*=|
|    . . S o * *.+|
|     . . . = E o |
|      . . + .    |
|       . o .     |
|        o..      |
+----[SHA256]-----+

  • -t 选项指定生成的密钥类型,一般为 rsa 类型;
  • -b 选项指定密钥长度,可以不加。

密钥生成过程中,可以指定密钥生成的路径,一般为用户的家目录;也可以对密钥进行密码设置,如果不想设置密码直接回车下一步。生成成功之后会在用户的家目录下的 .ssh 目录中生成 id_rsaid_rsa.pubknown_hosts 三个文件:

  • id_rsa.pub 是公钥,可以公开;
  • id_rsa 是密钥,注意保存,用于验证公钥;
  • known_hosts 里面存放着信任的远程主机信息。

2、拷贝公钥到远程主机上

进入公钥生成的目录 .ssh 中,执行公钥拷贝命令:

[root@localhost ~] ssh-copy-id -i ./id_rsa.pub root@192.168.56.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "./id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.56.10's password: 【输入用户密码】

该命令执行需要输入远程机器对应的用户密码。

注意ssh-copy-id 命令默认的端口也是 22,如果远程机器的 ssh 服务端口不是 22,需要加上 -p 选项指定端口。

拷贝成功之后会在我们拷贝公钥时指定的用户所在的家目录下的 .ssh/authorized_keys 文件中添加我们指定的公钥内容。所以,我们也可以使用账号密码登录进去服务器后,在 authorized_keys 文件中添加我们的公钥内容,效果都是相同的:

[root@localhost .ssh] echo "[公钥内容]" >> authorized_keys

3、使用密钥登录

成功添加公钥到服务器中后,就可以使用密钥登录了:

ssh -i ./id_rsa root@192.168.56.10

登录命令和用户名密码登录方式一致,只是添加了 -i (identity_file) 选项指定私钥文件所在的路径。如果创建密钥时设置了密码则会提示输入密钥所对应的密码,没有的话会直接登录。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值