服务器设置
文件 id_dsa.pub 包含客户端公钥,需要将其添加到服务器上的文件 $HOME/.ssh/authorized_keys 中:
- 将 id_dsa.pub 文件复制到服务器:
client$ scp ~/.ssh/id_dsa.pub user@server:~/.ssh/id_dsa.pub
当然,这次我们需要输入用户的密码。
2.现在,登录服务器机器,进入服务器端的.ssh目录
client$ ssh user@server server$ cd .ssh
- 现在,将客户端的公钥添加到服务器上的已知公钥列表中:
server$ cat id_dsa.pub >> authorized_keys server$ chmod 640 authorized_keys server$ rm id_dsa.pub server$ exit
客户端设置
协议 | 类型 | 命令行 |
---|---|---|
Version 1 | RSA1 | -t rsa1 |
Version 2 | RSA | -t rsa |
Version 2 | DSA | -t dsa |
在确定我们想要/需要哪种身份类型后,第一步是生成一个公私钥对,并将公共部分复制到服务器端的适当位置。
在用户的主目录中,在客户端机器上,执行(你应该有 $HOME/.ssh 目录,如果没有创建它):
# ssh-keygen -t dsa -f ~/.ssh/id_dsa Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: SHA256:Qmd9iBOzx02n4DvDiBwRoGbGGC12X9i41QtbBxznHZc root@onitroad The key's randomart image is: +---[DSA 1024]----+ |.. ..*.=o+......| |.=.o o * %o*.ooE | |o.B . * X O.+. | | + = * * o | | + S = | | . o | | | | | | | +----[SHA256]-----+
这里,
-t 用于加密类型。
-f 在哪里存储公钥/私钥对。
在这种情况下,用户 home 上的 .ssh 目录。
执行上述命令后,将询问密码。
将此部分留空,如果我们不想在每次连接时输入此密码,只需按 [enter]。
或者,可以设置一个 ssh-agent 来处理密码短语。
上面的命令在 ~/.ssh 中创建了两个文件:
# ls -lrt ~/.ssh/id_dsa* -rw-r--r--. 1 root root 602 Apr 12 14:45 /root/.ssh/id_dsa.pub -rw-------. 1 root root 668 Apr 12 14:45 /root/.ssh/id_dsa
警告
确保我们将私钥 (~/.ssh/id_dsa) 保密!虽然向全世界提供公钥 (~/.ssh/id_dsa.pub) 是安全的,但我们应该非常小心,以免其他人可以读取私钥 (~/.ssh/id_dsa)。
有权访问私钥的每个人都可以登录安装了匹配公钥的任何机器。
SSH 是一种在不同机器之间安全传输数据的协议。
SSH 协议使用公钥加密来允许客户端对服务器进行身份验证,并在必要时允许服务器在不来回发送密码的情况下对客户端进行身份验证。
公钥密码术使用公钥-私钥对。
私钥是保密的,永远不会通过网络传输。
公钥可以分发给所有对等点。
使用公钥加密的消息只能用私钥解密。
在 SSH 连接时,客户端接收服务器公钥,并验证它是否与 $HOME/.ssh/known_hosts 中存储的公钥匹配。
如果此测试成功,并且服务器没有客户端公钥,则需要密码。
否则,服务器发送一条用客户端公钥加密的消息,如果客户端成功解密消息,使用其私钥,则建立连接。
SSH 协议有两个版本,版本 1 和 2.
加密与协议版本相关。
版本 1 存在安全漏洞,应尽可能使用版本 2.
由于版本 1 的限制,大多数 SSH 服务器使用协议的版本 2.
有两种加密公钥-私钥对的算法,RSA 和 DSA。
测试
要测试无密码 ssh 是否有效,请使用以下语法:
$ ssh -l [user] [server] Last login: Tue Apr 12 15:20:07 2007 from 192.168.0.100
或者
$ ssh [user]@[server] Last login: Tue Oct 12 15:20:07 2007 from 192.168.0.100
如果系统没有向我们询问密码,则一切正常。