问题
我想通过使用 Visual Studio Code 的加载远程文件夹来在 digital ocean 中的 linux droplet 上处理代码项目远程 SSH 插件。
在此期间,我正在尝试验证 powershell 是否可以连接到 SSH,以便我可以在 VSCode 上进行故障排除。
背景
- 客户端是Windows 10 Home
- 远程是 Ubuntu 20.04
- ssh 位于
C:\Windows\System32\OpenSSH\ssh.exe
并且位于路径中 - 同一台机器上的 WSL 可以通过 ssh 连接到远程机器
SSH 设置和问题
我已经运行了以下命令:
PS> Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
PS> Start-Service ssh-agent
PS> ssh-add C:\path\wsl\folder\private.key
Enter passphrase for C:\path\wsl\folder\private.key:
Identity added: C:\path\wsl\folder\private.key (myserver.com)
运行 SSH 会生成一系列伪终端错误:
PS> ssh [email protected]
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
...
-T
使用、-T -t
和运行 ssh-tt
会产生相同的结果。无论管理员状态如何,这都会在 powershell 5 和 6 上发生。
在这种状态下,我无法在远程机器上运行任何命令,并且没有迹象表明已建立连接。
问题
我如何通过 ssh 从我的 Windows 机器连接到我的 Linux droplet?
答案1
通过添加RequestTTY Yes
到 ssh 配置文件解决了此问题。此文件%USERPROFILE%\.ssh\config
在 Windows 上默认存储在Win32的OpenSSH。
这是我当前的 ssh 配置:
Host myserver.com
HostName myserver.com
User me
RequestTTY Yes
这也解决了我使用 Visual Studio Code 加载远程编码项目的问题。