我有一台必须通过ssh频繁访问的服务器,因为我在该服务器上进行了计算。现在,计算中心明确禁止使用SSH密钥,因为它们是“不安全的”。他们认为,每次都可以在其他人面前用键盘输入我的密码是一种更安全的登录方式。
现在; 我无法改变主意(我尝试过)。
有没有一种方法可以至少临时存储SSH密码,GIT可以将密码存储在缓存中一定的时间?
SSHv2允许相同的经过身份验证的连接建立多个“通道” –交互式外壳,批处理命令,SFTP,以及诸如代理转发或TCP转发之类的辅助通道。默认情况下,您的服务器可能支持连接多路复用。(如果您的管理员抱怨,那不是在任何地方缓存密码,而是在缓存整个连接。)
使用OpenSSH,您可以使用ControlMaster
和ControlPath
选项(-M和-S)来使用它:
使用启动一个“主” SSH连接-M
。(由于您的配置中还没有ControlPath,因此您需要在命令行中使用来指定它-S
。它的寿命很长,因此我添加了一些-fN
选项以使其降至后台;否则,它们在技术上是可选的。)
$ ssh [email protected] -fNMS ~/.ssh/bar.socket
[email protected]'s password:
您回到了本地shell。
通过主服务器启动新连接:
$ ssh [email protected] -S ~/.ssh/bar.socket
你在。
为了使它对Git / rsync / SFTP有用,您需要ControlPath
在配置中进行设置,因为您将无法始终指定-S
:
Host *
ControlPath ~/.ssh/S.%r@%h:%p
您可以自动执行此操作–最新的OpenSSH版本也具有ControlPersist
该功能,如果还没有,则可以在后台自动建立主连接。这使您可以跳过第1步,而只需像往常一样使用ssh。
配置~/.ssh/config
:
Host *
ControlPath ~/.ssh/S.%r@%h:%p
ControlMaster auto
ControlPersist 15m
第一次连接要求输入密码:
$ ssh [email protected]
[email protected]'s password:
[foo@bar:~]$ exit
第二个没有:
$ ssh [email protected]
[foo@bar:~]$ yay
要控制Multiplex主站(停止它或配置TCP转发),请使用该-O
选项。
最新的PuTTY版本支持类似的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句