PyCharm因rsync需二次双因素验证,卡在SSH服务器自检环节
问题背景
使用要求双因素登录的集群时,在PyCharm中创建远程Python解释器,首次SSH连接可通过Duo完成验证,但测试rsync连接时再次触发双因素验证,而PyCharm未提供交互输入途径,导致无法完成配置。相关报错信息如下:
Successfully connected to rschaef@login.sherlock.stanford.edu:22
pwd
Failed to execute commandChecking 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:
Duo Push to XXX-XXX-3013
Phone call to XXX-XXX-3013
SMS passcodes to XXX-XXX-3013
Passcode or option (1-3):
解决方案
方案1:配置SSH控制套接字复用连接
通过SSH的ControlMaster特性让rsync复用已通过验证的SSH会话,避免二次验证:
- 创建SSH控制套接字存储目录:
mkdir -p ~/.ssh/sockets - 编辑
~/.ssh/config文件,添加目标主机的配置:Host login.sherlock.stanford.edu HostName login.sherlock.stanford.edu User rschaef ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 10mControlMaster auto:自动创建控制套接字ControlPath:指定套接字存储路径ControlPersist 10m:保持连接10分钟,足够完成PyCharm的配置流程
- 手动通过SSH连接集群一次,完成双因素验证:
ssh rschaef@login.sherlock.stanford.edu - 保持该SSH会话打开,回到PyCharm继续配置远程解释器,此时rsync会复用已验证的连接,无需再次验证。
方案2:配置Duo可信会话/设备
如果集群支持,可通过Duo设置减少验证次数:
- 登录集群的Web管理界面,找到Duo双因素认证设置
- 将当前设备标记为「可信设备」,或调整会话超时时间(比如设置为1小时)
- 完成设置后,短时间内的重复连接(包括rsync)不会触发二次验证
方案3:修改PyCharm的rsync命令参数
直接在PyCharm中指定rsync使用已有的SSH控制套接字:
- 在PyCharm的远程解释器配置页面,找到「Advanced」或「Rsync settings」选项
- 将rsync命令修改为:
rsync -n -e "ssh -o ControlPath=~/.ssh/sockets/%r@%h-%p" rschaef@login.sherlock.stanford.edu: - 确保已提前通过SSH完成一次双因素验证并保持会话,再运行PyCharm的rsync测试。
内容的提问来源于stack exchange,提问作者Rylan Schaeffer

