【Linux】ssh

ssh是一个远程登录的工具,提供加密服务。

1.安装,只需要sudo apt-get install openssh-server和sudo apt-get install openssh-server即可。安装好以后就可以直接使用了。

使用方式就是ssh user@ip,如果不写user@,那么是默认以当前执行shell的用户名来访问的,如果ssh的端口号改变了,那么需要加上-p参数指定端口号。

第一次使用ssh登陆一个server时,然后会有下面的信息:


这是ssh为了防止中间人监听攻击的手段,因为用户并不知道这个ip地址是不是真实的server,很可能有一个中间人冒充server,在https协议中使用签名解决,并且有权威的CA机构颁发证书,但是在ssh中并没有这样的机构,ssh所能做的就只是返回这个服务器的签名,让用户自行检查决定是不是要连接,输入yes以后,在输入密码就可以了。之后可以看~/.ssh/目录下,多了一个host文件,里面记录了用户选择相信的server的签名,第二次访问就不会询问了。


这里可能会有一个问题,就是server如果发生了改动,签名会变,这时ssh时会被告知签名不一致,无法登录,解决办法是使用ssh-keygen -R ip解决。但是我发现如果ssh用的是其他端口,貌似不行,只能通过删除host文件中对应一行来解决了。


https://blog.allenchou.cc/warning-remote-host-identification-has-changed/

2.使用密钥登录。每次登录都使用密码,如果server很多很麻烦,可以使用ssh密钥面密码登录。

使用ssh-keygen工具生成密钥对:-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,否则无法启动免密登录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值