阿国运维网技术分享平台:桌面运维、网络运维、系统运维、服务器运维(及云服务器),精品软件分享、阿国网络、尽在北京运维网
你可以配置 SSH 使用基于密钥的身份验证,而不是使用用户名密码的方式验证。为了使用密钥身份验证方式,你需要生成一对密钥(公钥与私钥—)。私钥作业 “密码” 保存在用户端,公钥放到用户想连接到的远端主机上。本地计算机通过私钥去验证远端主机上的公钥,以确定远端主机的 “合法” 性。
环境介绍:
两台虚拟机 —— workstation 和 servera,workstation 作为客户端,servera 作为服务端,我们现在就是要从 workstation 这台虚拟机上面,通过密钥验证的方式使用 ssh 连接到 servera。
通过 ssh-keygen 在 workstation 上面生成密钥对,并指定密钥的密码(如果不指定密码,则表示不使用密码,在使用密钥登录的时候,不会提示让你输入密码。)
id_rsa 是私钥,id_rsa.pub 是公钥(这里我使用的是系统默认的名称)
使用 ssh-copy-id 上传公钥到 servera
[it@works[文]tation ~]$ ssh-copy-[章]id -i .ssh/id_r[来]sa it@server[自]a
/usr/bin/[阿]ssh-copy-[国]id: INFO: Source of key(s) to be installed[运]: ".ssh/id_r[维]sa.pub"
The authentic[网]ity of host 'servera (10.10.10[文].25)' can't be establish[章]ed.
ECDSA key fingerpri[来]nt is SHA256:/X[自]j4qZo8BWS[阿]frzHt3OpZ[国]4sLuasIFY[运]xd6Wf/ucF[维]N2UL8.
Are you sure you want to continue connectin[网]g (yes/no/[[文]fingerpri[章]nt])? yes
/usr/bin/[来]ssh-copy-[自]id: INFO: attemptin[阿]g 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
it@server[文]a's password:[章]
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'it@server[来]a'"
and check to make sure that only the key(s) you wanted were added.
通过 ssh 连接到 servera,在弹出的窗口里输入私钥的密码(我 workstation 是图形界面的,所有会以弹出窗口的方式,让你输入密钥密码。)。
[it@works[自]tation ~]ssh it@server[阿]a
Last login: Thu Oct 29 14:41:13 2020 from 10.10.10.[国]20
[it@serve[运]ra ~]
有人可能会觉得这样一直重复输入密码很烦,有没有办法不输入密码?我们可以使用 ssh-agent 在 bash 进程中缓存私钥的密码。
[it@works[维]tation ~]eval(ss[网]h-agent)
Agent pid 3191
[it@works[文]tation ~]ssh-add[章] .ssh/id_r[来]sa
Enter passphras[自]e for .ssh/id_r[阿]sa:
Identity added: .ssh/id_r[国]sa (it@works[运]tation.la[维]b.test)
[it@works[网]tation ~] ssh it@server[文]a
Last login: Thu Oct 29 14:42:51 2020 from 10.10.10.[章]20
[it@servera ~]$
因为密码是缓存在当前 bash 中的,当我们切换到一个新的 bash 时,将依然要输入私钥密码。
使用相同的方式,将密钥传输到 serverb 上。