SSH也称为安全外壳或安全套接字外壳协议,主要用于安全地连接到远程服务器。默认情况下,SSH 连接始终发生在端口 22 上。虽然您可以选择从配置文件更改此端口sshd_config但通常不建议这样做。
SSH 身份验证的类型- 基于密码的身份验证
- 基于密钥的身份验证
SSH 主要适用于客户端服务器模型。在这个模型中,您将拥有一个公钥/私钥对,可以通过 linux 上的 ssh 注册机等工具生成。然后您的公钥将始终存储在服务器和客户端中,通常是计算机与ssh服务器联系并提供它想要证明其身份的密钥对的ID。然后,ssh 服务器创建一个质询,该质询由公钥加密并发送回客户端。然后,您作为客户端收回质询,使用私钥对其进行解密,并将原始通道发送回 ssh 服务器。协商完成后,客户端和服务器之间将成功建立连接。
什么是没有密码登录的SSH?没有密码登录的SSH意味着每当您尝试使用安全外壳(ssh)登录到远程服务器时,都不需要为您提供任何ssh密码。当您想通过 ssh 连接服务器在多个服务器上执行某些任务时,这通常是必需的。
什么是SSH注册机根据 ssh 注册机手册页, ssh-keygen 生成, 管理和转换 ssh(1) 的认证密钥。ssh-keygen 可以创建密钥以供 SSH 协议版本 1 和 2 使用。不应使用协议 1,并且仅用于支持旧设备。它存在许多加密弱点,并且不支持协议 2 可用的许多高级功能。
什么是SSH注册机RSA登录算法?这意味着 ssh 注册机工具使用 rsa 登录算法来生成公共/私有 rsa 登录密钥对。根据RSA文档,Rivest-Shamir-Adleman公钥算法(RSA)是使用最广泛的非对称密码。它的安全性来自于分解大整数的难度,这些大整数是两个大小大致相等的大素数的乘积。人们普遍认为因式分解是棘手的(即不可行,不允许有效的多项式时间解决方案),尽管这尚未得到证实。RSA 可用于加密和签名。
什么是 SSH 密钥登录?这是另一种身份验证方法,在该方法中,您不需要为身份验证提供任何密码。它将基于私钥身份验证,其中您已经将公钥添加到服务器。
使用 SSH 注册机的无密码 SSH 登录另请参阅: 如何在 ubuntu 上安装或启用 ssh「见度娘,这里不做过多描述」
步骤 1:先决条件Ubuntu 18.04:192.168.0.105
CentOS 7: 192.168.0.106
步骤 2:使用 SSH 注册机 RSA 创建身份验证密钥一开始,您需要通过运行命令使用 rsa 算法创建公钥/私钥对。ssh-keygen -t rsa
[root@localhost ~]# ssh-keygen -t rsa
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:8jmxYUbWNBkEKZzrn/gMoRYjYOWOaoNxfeBwn135edw root@localhost
The key's randomart image is:
---[RSA 2048]----
| . . .. =o |
| o .o.o |
|....o oo |
|..o= o.= . . o . |
|..o.=.* S o o E|
|oo . =.* = . |
|oo o .o=. |
|. .. .oo. |
| .o |
----[SHA256]-----
如果要检查 ssh 支持的所有密码,可以通过运行命令来检查。
ssh -Q cipher
[root@localhost ~]# ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
如果要检查 ssh 支持的所有密钥,可以使用命令进行检查。
ssh -Q key
[root@localhost ~]# ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
现在,您需要使用命令在远程服务器的用户主目录下创建一个隐藏的.ssh目录。请注意,此处的用户主目录将是将创建 .ssh 目录的目录。
ssh test@192.168.0.105 mkdir -p .ssh/home/test
[root@localhost ~]# ssh test@192.168.0.105 mkdir -p .ssh
test@192.168.0.105's password:
您可以转到远程服务器并验证是否在 /home/test 目录下创建了 .ssh 目录。
test@localhost:~$ pwd
/home/test
test@localhost:~$ ls -lrtd .ssh/
drwx------ 2 test test 4096 Jan 12 18:38 .ssh/
创建 .ssh 目录后,现在您需要将公钥复制到远程服务器中名为 .ssh 目录下的文件中,如下所示。authorized_keys
[root@localhost ~]# cat ~/.ssh/id_rsa.pub | ssh test@192.168.0.105 'cat >> .ssh/authorized_keys'
test@192.168.0.105's password:
步骤 5:在远程计算机上设置 SSH 密钥权限
复制公钥后,您需要确保为文件 ssh authorized_keys分配了适当的权限。
[root@localhost ~]# ssh test@192.168.0.105 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
一旦权限也发生了更改,现在是时候在没有密码身份验证的情况下测试 ssh了。要执行此操作,请运行命令。在这里您可以注意到,现在不需要密码身份验证即可连接到远程服务器。您以测试用户身份直接登录到远程计算机。
ssh test@192.168.0.105
[root@localhost ~]# ssh test@192.168.0.105
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-37-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Overheard at KubeCon: "microk8s.status just blew my mind".
https://microk8s.io/docs/commands#microk8s.status
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
116 packages can be updated.
1 update is a security update.
Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Sun Jan 12 18:17:00 2020 from 192.168.0.106
test@localhost:~$
欢迎各位小伙伴关注、点赞、评论、转发,你的关注和转发是我最大的动力!