【Linux】ssh
ssh是一个远程登录的工具,提供加密服务。
1.安装,只需要sudo apt-get install openssh-server和sudo apt-get install openssh-server即可。安装好以后就可以直接使用了。
使用方式就是ssh [email protected],如果不写[email protected],那么是默认以当前执行shell的用户名来访问的,如果ssh的端口号改变了,那么需要加上-p参数指定端口号。
第一次使用ssh登陆一个server时,然后会有下面的信息:
这是ssh为了防止中间人监听攻击的手段,因为用户并不知道这个ip地址是不是真实的server,很可能有一个中间人冒充server,在https协议中使用签名解决,并且有权威的CA机构颁发证书,但是在ssh中并没有这样的机构,ssh所能做的就只是返回这个服务器的签名,让用户自行检查决定是不是要连接,输入yes以后,在输入密码就可以了。之后可以看~/.ssh/目录下,多了一个host文件,里面记录了用户选择相信的server的签名,第二次访问就不会询问了。
这里可能会有一个问题,就是server如果发生了改动,签名会变,这时ssh时会被告知签名不一致,无法登录,解决办法是使用ssh-****** -R ip解决。但是我发现如果ssh用的是其他端口,貌似不行,只能通过删除host文件中对应一行来解决了。
https://blog.allenchou.cc/warning-remote-host-identification-has-changed/
2.使用**登录。每次登录都使用密码,如果server很多很麻烦,可以使用ssh**面密码登录。
使用ssh-******工具生成**对:-t参数指定**算法,一般用rsa
会提示输入一些信息,默认存储在~/.ssh目录下。
把.pub公钥放在server的用户目录下的.ssh文件下,并且改名为authorized_keys,如果已经存在该文件,则将刚才新的公钥追加至已存在的authorized_keys文件的末尾,因为一个server可以被多个用户登录,因此会有多个**对,authorized_keys也就需要存多个公钥了。
**存放在client端的用户目录下的.ssh下。
之后直接ssh,就不需要输入密码了,
但是这里还是有注意点的,就是**文件的权限问题。用户的私钥是只能这个用户查看的,因此g和o的权限应该是0。如果别人有读的权限,ssh就会提示下面的错误:
意思就是说**可以被别人看到,这个**匙不安全的,ssh拒绝使用该**提供登录验证,只能输入密码登录,这也是合理的,ssh假定**已经被泄露了,这时只能以输入密码的方式登录。
解决办法就是更改用户**的权限,最好是700。
除此之外,authorized_keys文件的权限也要注意,最好是600,否则无法启动免密登录。