问题1.0

问题1.0

问题1.0

我正在使用仅支持双因素身份验证的服务器(密钥对身份验证已禁用)。因此,每次我的 SFTP 客户端想要上传文件时,它都会要求我提供令牌……3 分钟后,这将成为一个 not_very_nice UX。

解决方案1.0

所以我了解了 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
$

然后,从另一个终端或通过另一个软件:

$ ssh my.example.com
Last login: Wed Oct  1 16:34:45 2014 from 12.34.56.78
$ 

这样,任务就完成了,不再需要输入 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

问题 2.0(TLDR)

一些软件(例如PyCharm IDE)使用他们自己的 SSH库/二进制/任何东西!这意味着我输入的任何内容~/.ssh/config都不会影响它,据我所知。

这就是我当前的问题:有没有办法“欺骗”此类软件使用已经存在的主连接?


一个想法:因为您通常可以将软件配置为使用不同的端口进行连接,所以我想知道是否可以设置某种隧道,将传入连接复用到现有的主设备上。但我的foo让我失望了......

编辑:

主要目的是连接到远程Python解释器/调试器。

编辑2:

除 22 和 80 之外的所有端口均已关闭。但是,可以执行以下操作:

remote$ ssh localhost:2222
(password or securekey login, both work)
remote$ 

但 2222 仅开放用于来自本地主机的连接,管理员不会打开任何其他端口,并表示“任何人都可以使用它”。

答案1

你遇到了一个非常有趣的问题。

真正的解决方案是首先向系统管理员寻求帮助。

如果这不是一个选择,那么下一个最好的事情就是让 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

现在将本地端口转发给它(您将在此处使用 2fa 登录):

 ssh -L 2230:localhost:2230 example_com_master

并将 pyCharm 定向到localhost:2230.您还可以在自定义 sshd 上设置密钥对身份验证。

请注意,这是一个不太可能的事情,您的系统管理员可能不会意识到这一点。

pyCharm 很可能已经使用 OpenSSH 来实现 ssh。如果是这样,向 pyCharm 添加多路复用支持将比我提出的解决方法容易得多。

相关内容