I work on a cluster that requires two-factor login for every new connection. When I try creating a remote python interpreter in PyCharm, I can successfully connect, which requires 1 round of two-factor login via Duo. But then, PyCharm tries to test whether rsync works, which requires another round of two-factor authentication:
Successfully connected to rschaef@login.sherlock.stanford.edu:22
> pwd
Failed to execute command
Checking rsync connection...
/usr/bin/rsync -n -e "ssh -p 22 " rschaef@login.sherlock.stanford.edu:
rschaef@login.sherlock.stanford.edu's password:
(rschaef@login.sherlock.stanford.edu) Duo two-factor login for rschaef
Enter a passcode or select one of the following options:
1. Duo Push to XXX-XXX-3013
2. Phone call to XXX-XXX-3013
3. SMS passcodes to XXX-XXX-3013
Passcode or option (1-3):
The problem is that PyCharm gives me no way to specify 1, 2 or 3, so I cannot authenticate again for rsync to complete. Consequently, I cannot move past this rsync step. Can someone please help me?
The comment by OP could serve as a good answer already, I elaborate here slightly.
Multiplexing aggregates all connection into one. To enable multiplexing you should modify ~/.ssh/config
on your local machine and add there:
Host *
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p
ControlPersist 10m
You can also limit it to some nodes only by changing Host *
into e.g. Host 1.2.3.4
.
Security consideration: make sure that the control path is accessible only by you. It is also possible that remote system admin blocks the multiplexing.
After setting the multiplexing, connect to the desired server by regular ssh, perform all required authentication steps and then connect within PyCharm. If everything goes well, PyCharm will reuse the existing connection without 2FA.