Windows Terminal ssh 远程 Linux 和使用 Git
Windows Terminal (中文:终端)是 Win11 自带的 Terminal。可以添加配置文件,然后把远程主机放在一个标签页里面。然后呢使用 Github 也希望可以每次不用输入密码,也需要使用 ssh-key。
ssh 远程主机另外一种很方便的方式是使用 ~/.ssh/config
给主机起个名字和配置 ssh-agent。
生成 ssh-key
Win11 默认是有一个 ssh 的客户端的。打开 Windows Terminal 执行:
ssh-keygen -t ed25519 -C "your_email@youremail.com"
一路回车。如果只是为了使用 Git,那么这步之后就已经可以啦。
拷贝公钥到远程主机
cat ~/.ssh/id_ed25519.pub | ssh user@REMOTE-IP-ADDRESS-OR-FQDN "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
ssh 通过密钥登录也就是可以免密登陆。如果是使用 Linux,有 ssh-copy-id 可以用。但是在 Windows 只能这样了。所以
ssh-copy-id 也就是自动做了上面这条命令的事情。
OpenSSH 规定,用户公钥保存在服务器的
~/.ssh/authorized_keys
文件。每行一个公钥。
Power Shell 生成 guid
[guid]::NewGuid()
添加 Windows Terminal 标签
在 Windows Terminal 设置的左下角有个打开 JSON 文件。滚动到 "profiles"
然后拷贝粘贴(不要忘了该成你的用户名和IP地址)下面的到 "list"
数组。
{
"guid": "{0caa0dad-35be-5f56-a8ff-afceaeaa6103}",
"name": "Home Server",
"commandline": "ssh -i \"~/.ssh/id_ed25519\" user@REMOTE-IP-ADDRESS-OR-FQDN",
"hidden": false
},
Conclusion
上面的 ssh-key 是没有设置密码的,如果设置了密码,每次就要输入密码。那么为了避免每次输入密码,有另外一个工具 ssh-agent 就是为解决这个问题而设计的。参考链接给出了更丰富和更详细的内容,以此博客记录自己在 Win11 使用 ssh 的方法。
参考链接:
https://blog.anurut.com/ssh-with-private-key-in-windows-terminal/
http://longrm.com/2021/06/04/2021-06-04-windows-terminal-ssh-guide/
https://wangdoc.com/ssh/key.html
https://interworks.com/blog/2021/09/15/setting-up-ssh-agent-in-windows-for-passwordless-git-authentication/