Powershell已经内置OpenSSH,用起来比Xshell还方便,并且用root账号或开启密码登陆都存在安全隐患,所以这里只介绍普通用户+ssh的登陆方式。

基本步骤:

1.本机生成key(如果已经有key,可以跳过)

打开powershell,输入:

ssh-keygen

一路enter,生成的秘钥默认位置在~\.ssh\下,即C:\Users\xxx\.ssh,xxx为你的windows用户名。

2.服务器端设置

服务器端的基本步骤是:用root账号登录服务器->创建一个普通用户->给用户授权sudo权限->复制公钥到服务器。

2.1 用root账号登录服务器

这里root账号的密码通常在VPS供应商的管理网站上可以设置和修改,登录的话通常有两种方式,一种是直接在网页上的控制面板登录,可能都不需要输入root密码,另一种是在powershell中输入ssh root@xxx.xxx.xxx.xxx@后面是公网IP地址,会提示输入root密码。

2.2 创建一个普通用户

adduser xxx 提示的个人信息可以一路回车跳过,建错id的话可以deluser xxx --remove-home

2.3 给用户授权sudo权限

可以有多种实现方式,比较简单的是:usermod -aG sudo xxx

也可以直接修改/etc/sudoer(不推荐)或者以配置的方式在/etc/sudoer.d/目录下添加文件,可能在不同的发行版下表示不一致。

用户有sudo权限后就可以切换到xxx用户进行操作了,毕竟root权限太大,平时应该用普通用户操作

su xxx

2.4复制公钥到服务器

  • 打开本地~\.ssh\目录下的.pub公钥文件,复制内容。

  • 进入用户目录下的.ssh文件夹:cd ~/.ssh/

  • 编辑authorized_keys文件,

    vi authorized_keys

    添加刚才复制的公钥,文件中可以用#开头添加注释,注意不要把公钥给注释了。保存退出。

注意:如果没有.ssh文件夹,或者是通过root账号新增的用户,需要手动新增一个文件夹,并设置文件夹权限为700chmod 700 .ssh),新增authorized_keys文件并设置权限为600或700(chmod 600 authorized_keys)(如果不新增key,连接时只要对该文件有读权限就可以,也就是400),权限不对的话后面连接会被服务器拒绝,每次都要输入密码。这里权限设置可以理解为只有用户自己才能操作这个文件夹,即使同组内用户也不能访问,更别说其它一般用户了,否则就有安全问题。

2.5重启sshd服务

sudo service sshd restart

2.6建立连接

完成后就可以在powershell输入

ssh xxx@myServerIP

直接连接主机了,这里的xxx就是创建的用户名。

注意:如果服务器的IP以前已经连接过,记得到本机~\.ssh\known_hosts(跟pub-key同目录)文件中删除该IP对应的那一行,不然的话会因为跟之前的记录冲突而导致无法建立连接。

3.其它

可以在powershell的脚本中建立一个函数代替ssh xxx@myServerIP简化连接,大致步骤如下:

先在powershell输入$profile,显示的就是配置文件的路径

进入相应目录打开这个配置文件,输入function loginxxx{ssh xxx@xxx.xxx.xxx.xxx}

完成以后,重新打开powershell,输入loginxxx就能连接服务器了,这里的xxx就是前面的用户名,服务器IP地址等。

没有配置文件的话需要添加,而自定义的配置文件生效的话可能会触发相关的安全机制,需要进一步的设置,具体可以在碰到的时候google解决