我的主机使用密码,而不是id_rsa的SSH进入。但不是每次input密码,有没有办法把密码放在我的.ssh / config?
例如:
Host gravy_access Hostname 127.0.0.1 User my_name_is_gravy Password gravy_password
所以,当我ssh gravy_access
它会立即允许访问。
不,我不认为你能做到这一点。 但为什么不创build一个密钥? 使用ssh-keygen(无密码)创build一个密钥,并将公共部分复制到远程主机,并将其添加到〜/ .ssh / authorized_keys。
请记住,任何获得你的私钥的人都可以将你公钥添加到〜/ .ssh / authorized_keys的任何主机上。
因此,请始终保密私钥 。
正如Iain在下面评论的, 更安全的是使用密码创build密钥,但是使用ssh-agentcaching它。 types
ssh-add your_key_file
你将被要求input你的密码。 它将被caching,只要你不注销它将留在那里被ssh用于login或远程命令执行或由scp使用。
这里有一篇关于在主机之间使用SSH而不使用密码的相关文章。
有6种使用ssh访问服务器的主要方式,提供一定程度的安全性:
以下可能是有趣的:
身份文件
要生成一个ssh标识文件对,使用ssh-key-gen程序来生成一个私有的(通常是~/.ssh/id_rsa
)和public(通常是~/.ssh/id_rsa.pub
)密钥对。 将公钥放在一个名为〜/ .ssh / authorized_keys的0600模式文件中,login用户的家中。 如果您没有为私钥使用密码,则现在应该可以不使用密码进行login。 但是用密码来保护你的私钥更合理。 可以避免在每个连接上重新input这个短语,方法是运行ssh-agent进程并将密钥和所需的密码加载到该进程中。 许多人在开始X会话时产生一个ssh-agent进程。
如果你需要一个ssh-agent,你可以按照下面的步骤做一些事情:
eval `ssh-agent -s` ssh-add [optional ssh private file if not ~/.ssh/id_rsa] <enter passphrase>
文件authorized_keys
可以包含许多不同的密钥。 也可以通过在文件中每个键的行开头使用控制短语来给予这些特殊的访问控制。 例如from="192.168.1.*
开头的密钥logging将限制从192.168.1.x地址连接的主机使用的密钥。
基于主机的authentication
基于主机的身份validation允许使用与其关联的远程主机名和用户名进行访问。 这使用客户端主机的ssh密钥来允许访问,以及客户端主机对访问远程主机的用户的validation。 这是一种弱的安全forms,可能根本不应该使用,或者只能在局域网上使用。
证书
证书提供了许多有趣的选项,虽然类似于身份密钥和authorized_keys的排列,但是反向排列使得通常位于authorized_keys文件中的控件被embedded在证书中。 想要让某人有机会在接下来的两天内将您的服务器上的date
作为来自networkingx的用户bob? 证书似乎是一个很好的做法。
从man ssh-keygen
:
ssh-keygen支持签署密钥来生成可用于用户或主机身份validation的证书。 证书由公钥,一些身份信息,零个或多个主体(用户或主机)名称以及由证书颁发机构(CA)密钥签署的一组可选的约束组成。 然后,客户端或服务器可以仅信任CA密钥并在证书上validation其签名,而不是信任许多用户/主机密钥。 请注意,OpenSSH证书与ssl(8)中使用的X.509证书格式不同,也更简单。
无密码authentication是公钥authentication的主要用例(如id_rsa)。 把你的密码放在一个纯文本configuration文件(比如你的.ssh/config
)中是一个很不安全的做法。 相反,您应该生成一个私钥和公钥,如@rems 在这里提及,@joe 在这里提到。 当您使用ssh-keygen创build私钥时,一定要提供一个空的密码。
正如其他人所说,创build一个密钥对,并将公钥部署到远程主机。 不要试图在没有密码的情况下创build密钥。 使用ssh-agent为您安全地保存私钥。 如果你在窗口上使用PuTTY,那么你可以使用Pageant,否则有ssh-agent 。
使用代理程序仍然需要input密码才能解锁密钥,但是您可以configuration密钥在需要再次解锁之前要持续多久。 这比没有密码的密钥安全得多。
如果你没有别的select(因为你没有权限访问服务器configuration,并且由于你的组织中的密钥authentication被一些愚蠢的规则禁止),你可以使用sshpass这个伪造交互式密码input的小工具。