2014-10-10 124 views
0

这可能是一个非常愚蠢的问题,但我使用Ganymed ssh 2库,我想知道如何使用Connection对象连接但使用无密码的ssh。我尝试使用键盘交互模式进行身份验证,但似乎没有得到支持。Ganymed ssh中的无密码ssh

谢谢!

回答

0

这里有几个无密码访问机器的情况是方便或必要的。我一直在查找一系列命令,我只需复制并粘贴即可快速完成。他们来了。

生成密钥对 - ssh的一种登录模式是使用SSH密钥对。密钥对由私钥和公钥组成。私钥保存在本地计算机上,而您的公钥则是分发给所有想要登录的计算机的密钥。有几种风格的密钥可以生成,rsa1 (for SSH1),dsa (SSH2)rsa (SSH2)。根据我的IT人,他喜欢DSA。您可以(也应该)将密码与密钥对相关联,以便即使其他人设法访问您的帐户,也只能使用密码。如果您有多个密钥对,则对所有密钥对使用相同的密码将使它们同时处于活动状态。您也可以改变密钥使用的位数。越难以破解,但我相信在标称性能下降。我被推荐使用2048位。很好,它是2048位DSA密钥。在强大的密码 如果由于某种原因,你需要一个RSA密钥

ssh-keygen -t dsa -b 2048 

#类型,你可以只更换此时,相应的参数, -t rsa or -t rsa1类型。
注:

  • 你需要确保文件的这个目录 的权限设置为允许读取用户只(-rw------- or chmod 600 *) /写。最重要的文件是 authorized_keys和私钥文件。如果您没有正确设置权限,则有时登录时将会以默认方式失败 。
  • 复制公钥到远程机器 - 一旦你做你的密钥对,你应该 你的公钥复制到远程机器上最好使用 加密方法,如SCP,并将其添加到您的.ssh/authorized_keys的 文件。你可以用一个命令来做到这一点。 cat〜/ .ssh/id_dsa.pub | SSH [email protected] '猫>>的.ssh/authorized_keys的'
  • 如果您需要在远程机器上的猫

    的〜/ .ssh/id_dsa.pub一个.ssh目录| ssh [email protected]'mkdir .ssh;猫>> 的.ssh/authorized_keys的

SSH代理 - 现在,你有一对,你可以尝试登录到远程机器,你通常会。系统会提示您输入密钥对密码。如果您在创建密钥时将其留空,则可以直接按Enter(并在您身上)。如果您在此时按Enter键,并且您有密码,则系统会提示您输入远程帐户密码。你可以避免使用ssh-agent来做到这一点。这将允许您在给定机器上输入一次密钥对的密码并反复重复使用。 ssh-agent将关于密钥的信息存储在该系统的内存中,所以如果您移动到另一个系统或重新启动计算机,则必须再次运行ssh-agent。 ssh-agent也会输出一些环境变量,你可以使用它来访问内存中的密钥。我有几个别名帮助我解决这个问题。有一点需要考虑的是,添加一个时间限制你的密钥在内存中活动的时间。如果你希望它们只持续一天,你可以添加-t 86400(那些是秒)到你的ssh-agent命令。

  • 对于tcsh

  • 激活密钥对,并存储了一些辅助文件。按

    运行一次
  • 要从中登录的机器。

    alias agent'rm -f“$ HOME”/。ssh/hostname .agent; ssh-agent -t 86400 | grep -v echo>“$ HOME”/ .ssh/hostname .agent;源“$ HOME”/。ssh/hostname .agent; ssh-add'

  • 在'agent'之后的任何shell中运行此命令以激活密钥。

    别名sshagent'if(-e“$ HOME”/。ssh/hostname .agent)source“$ HOME”/。ssh/hostname .agent; ENDIF '

  • 对于bash

    别名剂=' RM -f “$ HOME”/ SSH/hostname .agent。 ssh-agent -t 86400 | grep -v echo>“$ HOME”/ .ssh/hostname .agent;源“$ HOME”/。ssh/hostname .agent; ssh-add' alias sshagent ='if [-e“$ HOME”/。ssh/hostname .agent];然后输入“$ HOME”/。ssh/hostname .agent;网络连接”

现在你应该简单地能够在机器上运行一次代理,然后每个壳sshagent一次。然后,您可以登录到远程机器,而不必输入密码。如果您的ssh代理过期(您会知道,因为您会被要求输入密码),然后再次运行代理。 根访问权限 - 您还可以授予用户以root身份登录到计算机的权限,而无需输入root密码。只需将用户公钥添加到root的authorized_keys列表中,然后用户就可以使用root作为用户名登录到本机。

建议,一旦你有远程登录为root用户的能力使用按键,您应该通过确保以下行不在/etc/ssh/sshd_config: PermitRootLogin不使用密码,通过ssh禁用基于密码的登录