说明:server01为sftp服务端;client01为客户端
【在server01上操作】
1、强力卸载openssh-server
apt-get remove --purge openssh-server
2、安装openssh-server
1)更新apt-get 源
apt-get update
2)安装openssh-server
apt-get install openssh-server
【在client01上操作】
3、使用 root ssh登录测试
ssh root@server01
可能会出现失败(注意:如果ssh root@server01失败,可以使用以下方法查看详细登录过程中的LOG)
ssh -v root@server01
1)失败:Warning: Remote host identification has changed!
失败原因:由于在ssh登录时,server01会发送给client01一份sever01的publickey,此publickey和client01之前记录的publickey不符时,就会引发以上报错。
解决方案:将client01机上的Known_hosts中记录的server01的 publickey删除即可。
2)失败:root登录时报Permission denied, please try again。
问题原因:是由于sshd黙认root ssh登录是不启用的。
解决方案:vim /etc/ssh/sshd_config 中 PermitRootLogin yes
建议:出于安全考虑,不要启用root ssh登录,另外创建一个admin用于管理,支持ssh登录即可。
修改 /etc/ssh/sshd_config:
PermitRootLogin no 禁止root用户
3)失败:Privilege separation user sshd does not exist
失败原因:可能是passwd文件无sshd用户
解决方案:修改/etc/passwd文件,在其中加入 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
4、创建SSH管理用户
useradd -m admin
添加用户同时创建/home下用户目录
groupadd admingrp
usermod -G admingrp admin
5、SSH支持二种登录方式
1)密码验证登录
修改 /etc/ssh/sshd_config:
PasswordAuthentication yes
ssh admin@server01
注:如果报错参考 ”3、使用 root ssh登录测试“ 中关于失败的处理方法
注:因SSH的publish key和private key都是自己生成的,没法公证。只能通过Client端自己对公钥进行确认。通常在第一次登录的时候,系统会出现下面提示信息:
The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?
上面的信息说的是:无法确认主机ssh-server.example.com(12.18.429.21)的真实性,不过知道它的公钥指纹,是否继续连接?
之所以用fingerprint代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。
如果输入yes后,会出现下面信息:
Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts.
Password: (enter password)
2)密钥验证登录(基于公钥认证)
修改 /etc/ssh/sshd_config:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
在上面介绍的登录流程中可以发现,每次登录都需要输入密码,很麻烦。SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。流程如下:
首先:Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
添加方法1: ssh-copy-id admin@server01
方法1:会在server01的 /home/admin/.ssh/ 下生成一个authorized_keys文件,并且会将client的id_rsa.pub(公钥)内容存放到此文件中。
添加方法2:scp client01/id_rsa.pub admin@server01:~/.ssh/authorized_keys
方法2:会在server01的 /home/admin/.ssh/ 下生成一个authorized_keys文件,并且会将client的id_rsa.pub(公钥)内容存放到此文件中。
ssh admin@server01
因为PubkeyAuthentication优先级高于PasswordAuthentication,所以执行以上SSH连接时,不会提示输入密码,进入登录成功。(以达到免密登录)
具体流程如下:
=》Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。
=》Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
=》Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
=》Server端会最后比较Digest1和Digest2是否相同,完成认证过程。
标签:sshd,登录,admin,SFTP,ssh,Ubuntu,server01,服务器,root From: https://www.cnblogs.com/Jamesblog/p/17332572.html