我正在使用仅支持双因素身份验证(密钥对身份验证已禁用)的服务器。所以每次我的 SFTP 客户端想要上传一个文件时,它都会要求我提供一个令牌...... 3 分钟后,它变成了一个 not_very_nice UX。
所以我了解了 SSH 多路复用,现在我可以手动打开一个主连接(从终端),所有其他 ssh 连接都可以在上面多路复用,如下所示:
$ ssh example_com_master
Verification code: (/me enters the token code)
Password: (/me enters my pass)
Welcome to Ubuntu 14.04 blah blah....
Last login: Wed Oct 1 11:24:15 2014 from 12.34.56.78
$
Run Code Online (Sandbox Code Playgroud)
然后,从另一个终端或另一个软件:
$ ssh my.example.com
Last login: Wed Oct 1 16:34:45 2014 from 12.34.56.78
$
Run Code Online (Sandbox Code Playgroud)
所以,任务完成,不再输入2FA令牌。没有密码,就此而言,SSH FTW!
~/.ssh/配置:
Host example_com_master
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster yes
ControlPath ~/.ssh/sockets/example_com
ControlPersist 10
Host my.example.com
HostName my.example.com
User username
PubkeyAuthentication no
ControlMaster no
ControlPath ~/.ssh/sockets/example_com
Run Code Online (Sandbox Code Playgroud)
某些软件(例如 PyCharm IDE)使用自己的 SSH库/二进制文件/随便什么!这意味着我输入的任何内容都~/.ssh/config
不会影响它,AFAIK。
这就是我目前的问题:有没有办法“欺骗”这样的软件使用已经存在的主连接?
一个想法:因为您通常可以将软件配置为使用不同的端口进行连接,我想知道是否有可能设置某种隧道,将传入连接多路复用到现有主服务器上。但是我的 foo 让我失望了...
编辑:
主要目的是连接到远程 Python 解释器/调试器。
编辑2:
除了 22 和 80 之外的所有端口都关闭。但是,可以这样做:
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
Run Code Online (Sandbox Code Playgroud)
但是 2222 只对来自本地主机的连接开放,管理员不会打开任何额外的端口,说“任何人都可以使用它”。
你遇到了一个非常有趣的问题。
真正的解决方案是首先向系统管理员寻求帮助。
如果这不是一个选择,那么下一个最好的事情就是让 pyCharm 的 libssh 或它使用的任何东西(我做了一些谷歌搜索但无法弄清楚)解析你的“~/.ssh/config”。
如果这是不可能的,您也许可以在远程主机上运行您自己的 ssh 守护程序来侦听环回地址,并使用本地转发连接到它。
要设置非特权 ssh 守护进程(从SF 答案上的链接复制):
$ pwd
/home/<USER>
$ mkdir -p etc var/run
$ cp /etc/sshd_config etc
$ vi etc/sshd_config
[Set `Port 2230']
[Set `HostKey /home/<USER>/etc/ssh_host_rsa_key']
[Set `UsePrivilegeSeparation no']
[Set `PidFile /home/<USER>/var/run/sshd.pid']
[:wq!]
$ ssh-keygen -t rsa -f /home/<USER>/etc/ssh_host_rsa_key -N ''
Generating public/private rsa key pair.
Your identification has been saved in /home/<USER>/etc/ssh_host_rsa_key.
Your public key has been saved in /home/<USER>/etc/ssh_host_rsa_key.pub.
The key fingerprint is:
02:5d:02:5d:e8:2e:c6:b9:4c:d9:93:6c:13:ef:5d:61 hein@vmbert2k8
$ /usr/sbin/sshd -f /home/<USER>/etc/sshd_config -D
Run Code Online (Sandbox Code Playgroud)
现在将本地端口转发给它(您将在此处使用 2fa 登录):
ssh -L 2230:localhost:2230 example_com_master
Run Code Online (Sandbox Code Playgroud)
并将 pyCharm 定向到localhost:2230
. 您还可以在自定义 sshd 上设置密钥对身份验证。
请注意,这是一个不太可能的事情,您的系统管理员可能不会意识到这一点。
pyCharm 很可能已经使用 OpenSSH 来实现 ssh。如果是这样,向 pyCharm 添加多路复用支持将比我提出的解决方法容易得多。
归档时间: |
|
查看次数: |
3230 次 |
最近记录: |