이슈 1.0
2단계 인증(키 쌍 인증 비활성화)만 지원하는 서버를 사용하고 있습니다. 따라서 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/config:
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
내가 아는 한 내가 입력한 어떤 것도 영향을 미치지 않는다는 것을 의미합니다 .
현재 질문은 다음과 같습니다. 이미 존재하는 기본 연결을 사용하도록 이러한 소프트웨어를 "속일" 수 있는 방법이 있습니까?
한 가지 생각: 일반적으로 연결에 다른 포트를 사용하도록 소프트웨어를 구성할 수 있으므로 들어오는 연결을 기존 마스터에 다중화하는 일종의 터널을 설정할 수 있는지 궁금합니다. 하지만 내 친구가 나를 실망시키고 있어요 ...
편집하다:
주요 목적은 원격 Python 인터프리터/디버거에 연결하는 것입니다.
편집 2:
22번과 80번을 제외한 모든 포트는 닫혀있습니다. 그러나 다음을 수행할 수 있습니다.
remote$ ssh localhost:2222
(password or securekey login, both work)
remote$
그러나 2222는 localhost의 연결에만 열려 있으며 관리자는 다른 포트를 열지 않고 "누구나 사용할 수 있습니다"라고 말합니다.
답변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
.
이는 가능성이 낮은 이벤트이므로 시스템 관리자가 이를 인식하지 못할 수도 있습니다.
pyCharm은 이미 OpenSSH를 사용하여 ssh를 구현했을 가능성이 높습니다. 그렇다면 pyCharm에 멀티플렉싱 지원을 추가하는 것이 제가 제안한 해결 방법보다 훨씬 쉬울 것입니다.