sudo service ssh
sudo nano /etc/ssh/sshd_config
修改(参考)Port 2222#Windows的22端口已经被占用了, 最新版本用不着, 但是要加防火墙入站规则 AllowUsers yourusername#允许登陆的用户名, 就是WSL的用户名, 不写就不指定, 最新版本用不着 PermitRootLogin no#最新版本用不着 UsePrivilegeSeparation no#这一句话需要改一下, 看看能否避免出现bash->ssh->bash出现错误提示的情况(据说是因为无法获取权限).最新版本用不着 PasswordAuthentication yes#最新版本也用不着
- Windows防火墙设置允许2222端口, 或者用提权的cmd命令
netsh advfirewall firewall add rule name="SSHServer" dir=in action=allow localport=2222 protocol=tcp
- 如果找不到RSA key, 要在bash中
sudo ssh-keygen -A
sudo service ssh --full-restart
- ssh密钥添加
alias:nano ~/.bash_aliases
,alias command='complicated command'
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub username@$ip
- 权限要求
$ chmod go-w $HOME $HOME/.ssh#要求这两个文件夹group和other不能有写权限 $ chmod 600 $HOME/.ssh/authorized_keys $ chown `whoami` $HOME/.ssh/authorized_keys
- 当设置好了id_rsa之后, 会发现打开命令行输入ssh登陆不需要密码, 但是双击sh文件的方式仍然需要密码
通过ssh -v
模式可以看出, sh文件查找id_rsa文件不是在~/.ssh
路径下, 而是%HOMEPATH%\.ssh
中, 所以把文件复制过来就可以不用输入密码登陆ssh了. - 输入
~.
可以退出远程服务器. - 遇到
REMOTE HOST IDENTIFICATION HAS CHANGED!
提示, 说明服务器端的.pub文件更改了.
相关文件在/etc/ssh
(.pub)或者~/.ssh
(known_hosts)文件夹中(参考), 替换的时候注意权限
对于Windows自带的OpenSSH, 应用程序(ssh.exe)在%windir%\System32\OpenSSH
; sshd_config和.pub在%ProgramData%\ssh
; known_hosts在%USERPROFILE%\.ssh
.
隧道
- 貌似ssh直接就可以, 不需要从WSL里面弄…
- ssh -t brainor@隧道电脑 -p 2222 ssh ouwk@服务器
- ref
ssh username@目标机器IP -p 22 -o ProxyCommand='ssh -p 22 username@跳板机IP -W %h:%p'