前阵子闲着无聊,买了一个月的阿里云ECS来折腾一下。经过不懈努力,天翻地覆的找资料,终于安装好了wordpress,勉强弄好了一个简易博客。(坑爹的阿里要买三个月的才能备案,绑定域名)
后来看到了Windows的开发者大会,了解了WSL这个新奇的玩意儿,忽然想起之前链接ECS的服务器太麻烦了,也没用Ubuntu原生terminal的感觉,在初步了解WSL后我决定替换以前的方法。
其实WSL远程链接ECS就是找个linux链接ECS的方法,但是毕竟在Windows主机上弄,我只想说尽是些花里胡哨的,但是酷啊!(另外不得不夸奖一下微软对开源的态度,真的原来越棒,真香)
闲话少说!开始正题!关于WSL的安装我就不细说了,因为网上有太多的答案,随便找个的https://www.jianshu.com/p/6b02948b3d37
我装的是Ubuntu18.04
基本流程
阿里云官方推荐了两个*Linux ssh链接ECS的方法
第一个:
初次使用,设置.pem密钥文件的权限为400——sudo chmod 400 密钥路径
开始链接:——ssh -i [密钥路径] username@ip
这个方法除了第一次设置一下权限,算是很方便了,但是对我来说链接部分实在有点难以接受,果断放弃
第二个:
配置ssh_config文件:
备份配置文件,养成好习惯
sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config_bak
sudo vim /etc/ssh/ssh_config
添加或修改属性如下官方配置
Host ecs//实例名 随便取,简单最好
HostName ip //自己服务器的ip地址
Port 22
User root
IdentityFile ~/.ssh/privatekey.pem//密钥的路径
接着保存并重启注意这里的环境是WSL,没有sytemctl
重启服务:service ssh restart
开始链接:ssh ecs //自己的实例名
出现Welcome to Alibaba Cloud Elastic Compute Service !
代表链接成功
如果不行请先看下面填坑的内容
以后使用只需简短的ssh ecs
填坑
当然上面的过程是我在经过半天摸索后的达到效果,中间还有一大堆的坑
一:重装openssh
WSL安装好后自带了openssh,但是测试后不好使,查找资料发现是版本的问题,具体没深究,既然如此那么只有重装了,
sudo apt remove openssh-server
//不知道为啥,他还提示我client版本也不对,没法也得重装
sudo apt remove openssh-client
接下来就遇到一个大坑
sudo apt install openssh-server
sudo apt install openssh-client
上面的安装命令的结果都是报错了
E: Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true: Success
这是什么鬼玩意儿,百度没找到,还好有谷歌
https://askubuntu.com/questions/1123159/wsl-ubuntu-18-04-broken-apt?answertab=oldest#tab-top
有回复是这个sudo rm -rf /etc/apt/apt.conf.d/20snapd.conf
楼主它下面的回复是Quick and dirty, but it did the trick.
我也尝试了一下,ojbk(具体原因不去弄懂,感觉很麻烦的说)
二:ssh安装和权限设置
上面的openssh安装好后,按照官方的教程还是有问题的
1:这里是WSL,但是我的.pem密钥文件在其他硬盘,一开始我很傻逼直接写成下面这样子
IdentityFile D:\linux\key.pem
这是因为WSL和linux一样是挂载了硬盘,所以应该改为
IdentityFile /mnt/d/linux/key.pem
2:改好后测试结果出现了一个更奇葩的问题,弹出默认权限777太open了,不允许链接,那好按照官方的改为400但是发现不对,因为linux和windows权限不一样,所以无法修改,因而复制密钥文件到~/.ssh下再修改
sudo chmod 400 ~/.ssh/key.pem
那么IdentityFile ~/.ssh/key.pem
3:如果当前登录身份为root可能会报错:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
那么请切换到普通用户登录,这个问题我也看到相关的解决方法就是简单在ssh_config添加
PermitRootLogin yes
但是没成功。因为没啥影响,就不深究下去