Ganymed ssh中的无密码ssh

时间:2014-10-10 12:37:37

标签: java ssh

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

谢谢!

1 个答案:

答案 0 :(得分:0)

以下是一些方便或无需无密码访问机器的情况。我总是查找一系列命令,我可以复制并粘贴以快速完成。他们在这里。

生成密钥对 - ssh的一种登录模式是使用SSH密钥对。密钥对由私钥和公钥组成。私钥保留在本地计算机上,而您的公钥是您分发给要登录的所有计算机的公钥。您可以生成几种密钥,rsa1 (for SSH1)dsa (SSH2)rsa (SSH2)。根据我的IT人员,他喜欢 DSA 。您可以(并且应该)将密码与密钥对相关联,这样即使其他人设法访问您的帐户,也只能使用密码。如果您有多个密钥对,则对所有密钥对使用相同的密码将使它们同时处于活动状态。您还可以更改密钥使用的位数。你使用的位越多,它就越难破解,但我相信标称的性能下降。我被建议使用2048位。非常好,它是2048位DSA密钥。

ssh-keygen -t dsa -b 2048

#输入强密码 如果由于某种原因你需要一个rsa键,你可以用适当的参数, -t rsa or -t rsa1替换该类型。
注意:

  • 您需要确保此目录中文件的权限 设置为仅允许用户进行读/写(-rw------- or chmod 600 *)。要做的最重要的文件是 authorized_keys和私钥文件。有时登录会 如果您没有正确设置权限,则默默地失败。
  • 将公钥复制到远程计算机 - 完成密钥对后,即可 应该将您的公钥复制到远程计算机上,最好使用 加密方法,如scp,并将其添加到.ssh / authorized_keys 文件。您可以使用单个命令执行此操作。 cat~ / .ssh / id_dsa.pub | ssh user@remote.machine.com' cat>>的.ssh / authorized_keys的'
  • 如果您需要在远程计算机上创建一个.ssh目录

    〜/ .ssh / id_dsa.pub | ssh user@remote.machine.com' mkdir .ssh;猫>>    的.ssh / authorized_keys的'

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

  • 对于tcsh

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

  • 运行一次
  • 您要登录的计算机。

    别名代理' rm -f" $ HOME" / .ssh / hostname。代理人; ssh-agent -t 86400 | grep -v echo> " $ HOME" / .ssh / hostname。代理人;来源" $ HOME" / .ssh / hostname。代理商; SSH-添加'

  • 在代理商'之后的任何shell中运行此功能。到"激活"钥匙。

    别名sshagent' if(-e" $ HOME" / .ssh / hostname。agent)source" $ HOME" /.ssh / {{ 1}}。 ENDIF'

  • 对于bash

    alias agent =' rm -f" $ HOME" / .ssh / hostname。agent; ssh-agent -t 86400 | grep -v echo> " $ HOME" / .ssh / hostname。代理人;来源" $ HOME" / .ssh / hostname。代理商; SSH-附加' 别名sshagent =' if [-e" $ HOME" / .ssh / hostname。agent];然后来源" $ HOME" / .ssh / hostname。音响'

现在您应该只需在计算机上运行一次代理,然后每个shell运行hostname一次。然后,您无需输入密码即可登录远程计算机。如果您的ssh代理程序过期(您将知道,因为您将被提供密码),请再次运行代理程序。 Root访问 - 您还可以让用户以root用户身份登录计算机,而无需提供root密码。只需将用户公钥添加到root的authorized_keys列表中,然后用户就可以使用root作为用户名登录计算机。

  • #Admin's sshagent
  • #User正在代理cat ~user/.ssh/id_dsa.pub | ssh root@remote.machine.com 'cat >> .ssh/authorized_keys'
  • #或输入密钥对sshagent; ssh root@remote.machine.com

建议您一旦能够以root身份使用密钥远程登录,则应通过ssh禁用基于密码的登录,方法是确保以下行位于password ssh root@remote.machine.com PermitRootLogin 无密码