Cha*_* Xu 36 putty host hudson key
我有一个简单的自动化过程,需要通过SSH将一些文件从linux服务器复制到Windows.这可以使用腻子来完成.
SSH作为协议的一部分,验证主机的身份,如果不知道是正确的,将提示您接受主机的身份.当我用putty手动连接linux服务器时,它不会提示任何信息来接受主机的身份.但是,一旦我将这个自动化过程放入Hudson作为计划工作.确切的信息是:
服务器的主机密钥未缓存在注册表中.您无法保证服务器是您认为的计算机.服务器的rsa2密钥指纹是:ssh-rsa 1024 cc:78:13:a3:68:a6:59:7e:b8:23:2d:13:3e:66:9b:b9如果您信任该主机,请输入" y"将密钥添加到PuTTY的缓存中并继续连接.如果要仅进行一次连接,而不将密钥添加到缓存中,请输入"n".如果您不信任此主机,请按Return键放弃连接.将密钥存储在缓存中?(y/n)连接被放弃了.
假设主机密钥正确,通常你会在这里点击"Y",以便在将来的连接中存储它.存储在HKEY_CURRENT_USER\Software\SimonTatham\Putty\SshHostKeys下的注册表中
但遗憾的是,在Hudson中运行的自动化进程无法通过命中"Y"进行交互,以将主机密钥存储在putty缓存中.而且我也无法通过在dos命令下运行自动化过程来重现该问题.
有谁知道如何解决这个问题?
Jay*_*Jay 40
echo y | pscp -i /path/to/key/file user@remote:/tmp/file .
echo y | plink -i /path/to/key/file scripts.sh
Run Code Online (Sandbox Code Playgroud)
它会在第一次将主机键fingureprint存储到以下位置,并且下次将忽略"y"
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
Run Code Online (Sandbox Code Playgroud)
Cla*_*lay 19
对于内部服务器,盲目echo y | ...
技巧可能足够(而且非常简单).
但是,对于通过Internet访问的外部服务器,接受服务器主机密钥一次而不是每次盲目接受都要安全得多.
创建一个可以在客户端计算机上运行的.reg文件.
plink ...
regedit
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
rsa2@<port>:<address>
)在客户端计算机上缓存主机密钥
plink
(即如果它是服务帐户)小智 15
使用使用本地系统帐户的批处理调度程序时,我也遇到此问题.使用此帐户,您无法登录以接受主机密钥或手动设置该HKEY_CURRENT_USER
值.我发现创建以下密钥:
HKEY_USERS\.DEFAULT\Software\SimonTatham\PuTTY\SshHostkeys
Run Code Online (Sandbox Code Playgroud)
并添加此处为本地系统帐户工作的主机字符串值.
小智 9
截至2014年9月9日,使用相应版本的plink(使用plink 0.66测试),您可以使用-hostkey选项,如下所示:
http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/accept-host-keys.html
使用原始问题中的密钥:
plink -hostkey cc:78:13:a3:68:a6:59:7e:b8:23:2d:13:3e:66:9b:b9 user@remote
Run Code Online (Sandbox Code Playgroud)
我在脚本中成功使用了"-hostkey"来解决初始主机密钥提示问题.
还记录了"-hostkey"以使用pscp(版本0.66).
请注意,如果更改主机或sshd服务器重新计算密钥,则必须更改主机密钥.
小智 6
echo y | plink -ssh <username@remotemachine> -pw <password> exit
plink -ssh <username@remotemachine> -pw <password> [yourcommand]
Run Code Online (Sandbox Code Playgroud)
说明:使用echo to pipe,用户输入所选命令的"y",然后退出.然后,下一个语句将再次调用plink可执行文件来运行您的命令.