如何为SSH永久添加身份?


37

ssh-add <key>每当我需要ssh进入Web服务器时,都需要运行。有没有一种方法可以永久添加ID,所以我不必每次登录时都添加身份?

编辑:关键是我从云服务下载的一个pem文件。

Answers:


40

像正常:那样生成密钥ssh-keygen,然后使用将该密钥放置到远程服务器上ssh-copy-id,这会将其同步到远程服务器的接受密钥。

ssh-keygen
ssh-copy-id user@host

它将提示您输入密码,然后执行将.pub密钥与远程SSH服务器链接所需的所有步骤。

默认情况下,它将所有.pub密钥复制到远程服务器。如果您只是使用创建密钥,ssh-keygen那么这不是问题(因为您只有一个!)。但是,如果您有多个键,则只能复制带有-i标志的特定键。

ssh-copy-id -i ~.ssh/key_name.pub user@host

替换key_name.pub为密钥名称。


4
对于像我(或提问者)这样的人,唯一暴露于ssh的人正在使用它访问云托管的服务器,在该服务器中,Web服务会创建密钥并将其提供给我(在我的情况下为AWS服务器),因此很难回答无需做一些重要的背景研究就可以理解。例如,我从未使用过ssh-keygenssh-copy-id。在另一方面,像回答这一个给我给我的知识水平是完全明确的和有用的。由您决定是否要以任何方式调整答案以帮助像我这样无知的人。:)
Mark Amery 2014年

答案假设我要生成一个新密钥。如果我只想在密钥环中注册一个现有密钥怎么办?
donquixote

@donquixote:请参阅下面的user626052 答案
naught101

7

您可以使用以下命令生成ssh密钥:

ssh-keygen

然后,您可以使用以下命令将密钥复制到服务器:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

现在,您可以自动登录网络服务器


1
要将密钥复制到该服务器,可以分别使用ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servername~/.ssh/id_rsa.pub。实际上,如果您使用密钥文件的默认名称,您甚至不必指定它。
Carsten Thiel

5

把这个放在你的 ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
这是实际回答问题的唯一答案。其他的只是将默认的公共密钥添加到单个目标服务器,如果您为不同的服务器组有两个以上的分隔,这将很烦人。
naught101

3

如果您的密钥是无密码的,并且被命名为ssh在识别(~/.ssh/id_dsa~/.ssh/id_rsa)时将尝试查找的文件之一,则不必将其添加到代理中。

但。如果极有可能这些文件被盗,则您将只允许任何人访问使用此身份的服务器。一言以蔽之。

恕我直言,无密码的私钥是一种不好的做法,应仅在~/.ssh/authorized_keys限制非常严格的环境中使用。


1
ssh-agent可以在您登录时保留已解密的私钥。如果启用,则gnome-keyring甚至可以使用您的登录密码。哦,ssh-copy-id也可以将您的公钥复制到服务器。
弗兰克

2

编写一个简短的shell脚本,该脚本将运行ssh-add,然后进行如下连接:

ssh-add ~/.ssh/your-key
ssh user@remotehost

然后,您可以使用一个命令将ssh插入主机。


1

对于AWS,下载pem密钥,然后运行:

ssh-add /path/to/pemfile.pem

这对我有用,ubuntu 18.04。来源,不需要其他任何内容。

注意:但是,在执行此操作之前,将权限设置为400很重要。

chmod 400 /path/to/pemfile.pem

如果没有,您将得到一个错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @ @
警告:未保护的私钥文件!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ / @ / @@@@@@@@@@的/home/toing_toing/blablabla.pem权限0664太开放。要求他人不能访问您的私钥文件。此私钥将被忽略。


0
 ssh serveruser@servername "cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys" 

-2

您是否在谈论Amazon Cloud?在〜/ .bashrc中,创建环境变量:

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

是的,我谈论的是云,但这是ssh进入实例的关键对,并且上述环境变量对于使用api-tools是必需的:)
theTuxRacer 2011年

好。因此,生成没有密码的RSA密钥:“ ssh-keygen -t rsa”,然后将生成的公共密钥(〜/ .ssh / id_dsa.pub)连接到远程服务器的〜/ .ssh / authorized_keys文件。许多人给出了实现这一目标的一线希望。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.