使用公钥/私钥设置无密码的Linux登录

使用一组公钥/私钥允许您登录到远程Linux系统,或者在不使用密码的情况下使用ssh运行命令,这可能非常方便,但是设置有点复杂。这里是如何和一个脚本来帮助。

Ivanastar /盖蒂图片社

在a上建立帐户Linux允许您在没有密码的情况下远程登录或运行命令的系统并不那么困难,但是如果您想让它正常工作,您需要了解一些繁琐的细节。在这篇文章中,我们将运行整个过程,然后展示一个帮助管理细节的脚本。

一旦设置好,如果你想在脚本中运行ssh命令,尤其是一个你可能要计划自动运行密码访问时特别有用。

需要注意的是,您不必在两个系统上使用相同的用户帐户。事实上,您可以对系统上的多个帐户或多个系统上的不同帐户使用您的公钥。

下面是如何设置它。

哪个系统启动呢?

首先,你需要开始从要发出命令的系统上。这是一个你将用来创建SSH密钥系统。您还需要能够访问该帐户上这些命令将运行在远程系统上。

为了保持角色清晰,我们会打电话给我们场景中的“老大”是第一个系统,因为它会发出要在其他系统上运行命令。

因此,命令提示:

老板美元

如果您还没有公钥/私钥对建立您的帐户的BOSS系统上,使用类似如下所示的命令来创建一个。请注意,您可以在各种加密算法之间进行选择。(一般是用RSA或DSA)。请注意,在不输入密码访问该系统,你将需要为下面的对话框中显示的两个提示输入任何密码。

如果您已经有一个与此帐户关联的公钥/私钥对,请跳过此步骤。

boss$ ssh-keygen -t rsa生成公钥/私钥对。输入保存密钥的文件(/home/myself/.ssh/id_rsa):输入密码短语(因为没有密码短语,所以为空):<==只需按回车键即可输入相同的密码短语:<==只需按回车键即可您的身份已保存在/home/myself/.ssh/id_rsa中。您的公钥已保存在/home/myself/.ssh/id_rsa.pub中。密钥指纹是:SHA256:1zz6pZcMjA1av8iyojqo6NVYgTl1+cc+N43kIwGKOUI myself@boss。| | E+ ..| | .+. o + o | | .+.. o*。| |…所以+*B o | | +。= = B。| |。o。.... + +。 | |o o . . o..o+ | |=..o.. ..o o. | +----[SHA256]-----+

上面显示的命令将同时创建公共和私有密钥。什么一个加密,另一个将解密。因此,这些按键之间的关系是至关重要的,私钥应从来没有共享。相反,它应该保存在boss系统上的.ssh文件夹中。

注意,在创建时,您的公钥和私钥将保存在.ssh文件夹中。

下一步就是复制公共您想要从boss系统访问的系统的密钥,而不需要使用密码。您可以使用SCP要做到这一点,虽然,在这一点上,你仍然需要输入密码。在这个例子中,该系统被称为“目标”。

老板$ SCP的.ssh / id_rsa.pub myacct @目标:/首页/我的帐户myacct @目标的密码:

在目标系统(在该命令将要运行的一个),你需要安装你的公钥。如果你没有一个.ssh目录(例如,如果你从来没有使用该系统上的SSH),运行如下命令将设置一个适合你:

目标$ ssh本地主机日期目标$ ls -la .ssh总共12 drwx- 2 myacct 1月19日11:48。drwxr-xr-x 6 myacct myacct 4096 Jan 19 11:49 ..myacct 222 Jan 19 11:48 known_hosts

仍然在目标系统上,然后需要将从“boss”系统传输的公钥添加到.ssh/authorized_keys文件中。如果文件已经存在,下面的命令将把键添加到文件的末尾;如果文件不存在,则创建文件并添加键。

目标$猫id_rsa.pub >>的.ssh / authorized_keys中

接下来,需要确保authorized_keys文件的权限设置为600。如果没有,运行chmod 600 . ssh / authorized_keys命令。

目标$ ls -l命令的authorized_keys -rw ------- 1我自己569 1月19日12:10的authorized_keys

还要检查目标系统上您的.ssh目录的权限是否设置为700。使用以下命令修复权限搭配chmod 700的.ssh如果需要的话。

目标$ ls -ld .ssh drwx—2 myacct 1月14日15:54 .ssh

此时,您应该能够从您的boss系统远程运行命令到目标系统,而不需要输入密码。除非目标系统上的目标用户帐户拥有与您试图连接的用户和主机相同的旧公钥,否则这应该可以工作。如果是这样,您应该能够删除较早的(和冲突的)条目。

使用脚本

使用脚本可以做一些工作轻松了许多。在下面的示例脚本,但是,一个恼人的问题,你会遇到的是,你必须配置了无密码访问之前进入目标用户的密码多次。一种选择是打破剧本分为两个部分 - 即需要在BOSS系统上运行的命令,并且需要在目标系统上运行的命令。

以下是该脚本的所有版本:

#!/斌/庆典#注:此脚本要求您对远程ACCT#密码才能使用公钥LOC =`hostname`#从要运行的本地系统设置免密码访问从#命令WO密码#获取目标系统和帐户回声-n“目标系统>”读REM回声-n“目标用户>”读取用户#创建密钥对,如果存在,如果[不公钥!-f的〜/ .ssh / id_rsa.pub];然后SSH-凯基-t RSA科幻#确保远程帐户的.ssh目录存在回声检查远程系统的ssh $ @用户$ REM“.ssh目录,如果[-d /home/$user/.ssh!]。随后的mkdir /home/$user/.ssh;网络连接”#份额的公钥(使用本地主机名)回声复制公钥SCP的〜/ .ssh / id_rsa.pub $用户@ $ REM:/家庭/ $ USER / $用户$ LOC.pub#把公钥到适当的位置添加回声关键的authorized_keys的ssh $ @用户$ REM“猫/home/$user/$user-$LOC.pub >> /家庭/ $ USER /。SSH / authorized_ke YS “上的authorized_keys和的.ssh#设置权限(可能是OK的话)回声设置权限的ssh $ @用户$ REM ”搭配chmod 600的〜/ .ssh / authorized_keys的“ SSH $用户@ $ REM” 搭配chmod 700〜/。SSH”#试试吧 - 不应该要求输入密码回声测试 - 如果请求没有密码,你都设置SSH用户$ @ $ REM / bin / hostname命令

该脚本已配置来告诉你它是什么时,都必须输入密码做。互动将是这个样子:

$ ./rem_login_setup目标系统>目标用户> lola检查远程系统lola@fruitfly的密码:复制公钥lola@fruitfly的密码:id_rsa上的.ssh目录。添加密钥到authorized_keys lola@fruitfly的密码:设置权限lola@fruitfly的密码:测试——如果没有密码要求,你是所有设置的结果

如上所示的方案后,你可以登录到萝拉的账户上这样的果蝇:

$ ssh lola@fruitfly [lola@fruitfly ~

一旦设置了无密码登录,您就可以从boss系统登录到目标系统,而不需要密码,并且可以运行任意的ssh命令。以这种方式运行没有密码并不意味着您的帐户不安全。然而,根据目标的性质,保护您在boss系统上的密码可能变得更加重要。

加入网络世界社区吧有个足球雷竞技app脸谱网LinkedIn对大家最关心的话题发表评论。
有关:

版权所有©2020Raybet2

IT薪资调查:结果是