0%

win10 上使用 SSH 实践

win10 已经使用的越来越顺手,而且越发喜爱在 win10 上工作了,随手记录一下一些使用的体验和配置。

工作中使用跳板机和服务器是不可避免的,win10 中内置了 SSH 服务,可以很方便的满足我们的需求。

首先,远程 SSH 必须要有一个给力的 terminal,这里我大力推荐 windows-terminal,微软自家研发的,很有 vscode 的味道,爱不释手,目前的缺点是必须有些版本(1903以上)才能用,而且看上去比较简单,配置起来略显麻烦。关于配置,可以参考新生代 Windows 终端:Windows Terminal 的全面自定义

一般公司都是通过密钥登陆的,这里也比较推荐这种方式。关于密钥登录的方式以及 SSH 服务器的密钥登陆配置,可以自行查资料。不再赘述。

假设服务器已经配置了密钥登陆,那么服务器会产生一个公钥 id_rsa.pub 和私钥 id_rsa,其中公钥会写入到服务器的 ~/.ssh/authorized_keys 中(可以添加多个公钥)。私钥就是我们用于登录服务器的。可以通过 ssh -i id_rsa xxx 来登录服务器。私钥和公钥是通过 ssh-keygen 产生的,如果产生的过程中私钥有密码,还需要输入密码。

以上登录方式每次都需要输入私钥路径,我们可以配置本地机器的 ~/.ssh/config 来达到简化目的。

1
2
3
4
5
Host ubuntu
IdentityFile ~/.ssh/id_rsa
HostName 1.1.1.1
Port 1111
User murphy

注意,这里的 id_rsa 是服务器上的公钥(写进 ~/.ssh/authorized_keys)对应的私钥。

如此处理之后,我们就可以直接通过 ssh ubuntu 来登录这台机器了。

跳板机的处理

跳板机一般通过 SSH ProxyCommand 来实现直连,命令和 Linux 有一点点区别。

1
2
3
4
5
6
7
Host k8s006
IdentityFile ~/.ssh/id_rsa
HostName 2.2.2.2
User murphy
Port 2222
StrictHostKeyChecking no
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe ubuntu -q -X -W %h:%p

这里是以上文设置的 ubuntu 作为跳板机。

这些需要注意的是,ProxyCommand 需要利用 ssh-agent 服务,这个在 windows 上是默认关闭的。我们可以将其设置为自动打开。

  1. 检查 ssh-agent 服务的状态:

    Get-Service | select -property name,starttype

    在其中找到 ssh-agent,查看其状态,一般情况下应该是 disabled。

  2. 设置 ssh-agent 服务的启动方式(管理员运行):

    Set-Service -Name ssh-agent -StartupType Manual

    这里可以是 Manual,也可以是 Automatic

  3. 手动打开 ssh-agent 服务:

    Start-Service ssh-agent

    如果设置不生效,或者为 Manual,也可以手动打开。

保存密钥的密码

如果产生密钥的时候设置了密码,那么每次登录的时候都需要密码,可以通过设置缓存解决。

ssh-add ~/.ssh/id_rsa

这条命令也需要 ssh-agent 服务。