前言
SSH 是我们经常用的一种协议,而 VSCode 的拓展 Remote-SSH 确实给力,允许在远程连接,在本地的终端进行编程。对我而言,就不需要在虚拟机 Ubuntu 里面安装 IDE,或者每次用共享文件夹编程完后跑到虚拟机中再跑程序。可以直接在自己的 Windows 下的 VSCode 进行编程。
关于这方面的博客大多只有陈列一堆的命令而不加解释,读者照抄命令,有时候可以成功,有时候却不能,有时候抄命令抄一半就忘了抄到哪里。
最糟糕的是不能举一反三,比如现在似乎没有用 Remote-SSH 连接 kali 的文章。这也正是此文章的目的所在之一。
此文章最重要的目的在于将整个过程命令的含义和排错命令进行阐述。
SSH 需要注意的几个点
SSH 命令
1 | ssh -p 22 username@ipaddress |
端口
在命令中已经声明端口是22 (-p 22),很多时候可以省略这个参数,因为 ssh 命令默认的端口就是 22。
端口 22 有时候是没有打开的,在 Linux 和 Windows 系统中都是用 netstat -an 来查看所有开放的端口。
在 Linux 下可以用 netstat -an | grep :22 来查看端口 22 是否开放;

在 Windows 下可以用 netstat -an | findstr ":22" 来查看端口 22 是否开放。

连接成功
连接之后查看信息:
1 | user@hostname :~$ echo $SSH_CLIENT |
主机名与用户
一种可能导致连接不成功的原因是把主机名和用户名搞混淆了。
这样会错连接一个可能存在也或者不存在的用户。
查看主机的命令是 hostname ,查看用户的命令是 whoami。
其实也可以发现在 Linux 的终端中,每个命令的头部是 username@hostname ;
而 Windows 的终端中命令的头部只有目录信息。
VSCode Remote-SSH — kali
VSCode Remote-SSH
这个拓展是非常易用的,只需要启动 Remote-SSH后点击 Remote-SSH:Connect to Host...,输入 ip 和密码就可以 SSH 连接到远程机器。
kali
1.Permission denied, please try again.
如果用同样的方式去连接 kali 的话,会遇到的第一个情况是:
1 | Permission denied, please try again. |
原因在于用上述的方式默认连接的是 kali 的普通用户,但是 kali 是默认是特权用户 root,所以输入的账户和密码是不对应的。
解决的方法是:
启动 Remote-SSH后点击 Remote-SSH:Connect to Host...,再点击 Add New SSH Host...,根据提示输入
ssh root@xxx.xxx.xxx.xxx,此时再连接,输入的密码就匹配上了。
2.ssh:connect to host xxx.xxx.xx.xx port 22: Connection refused
虽然密码正确,但是依然连接不上。
现在再去查“kali使用ssh进行登录”,就很容易明白为什么 kali 使用 ssh 登录需要改那里改这里了。
这也是 kali 是默认是特权用户 root 导致的。平时我们用 SSH 连接的是普通的用户,连接特权用户需要更改 SSH 的配置文件。
修改 ssh 配置文件
在 kali 的终端下:
需要修改的 ssh 的配置文件有 /etc/ssh 下的 ssh_config 和 ssh文件。
修改 ssh_config 文件
1 | cd /etc/ssh |
修改一个地方:

保存修改,退出 vim 编辑器
1 | :wq! |
修改 sshd_config 文件
1 | vim sshd_config |
修改两处地方:

修改的含义,根据其中文意义和文章之前的解说应该非常容易理解。
保存修改,退出 vim 编辑器
1 | :wq! |
重启ssh服务
1 | service ssh strat |
有时候重启一下才会生效(不知道为什么)。
连接
再一次用 VSCode 的 Remote-SSH 连接,就能成功连接 kali 了。