sshd服务,系统自带,默认开机自启运行
云/物理服务器的安全组和防火墙默认放行该端口
软件包:openssh-server(服务端);openssh-client(客户端);
格式:ssh IP地址/域名 [参数]
[参数]:
-p 端口号:ssh指定端口登录,一般用于登录修改过端口号的服务器
-i 密钥文件路径:使用指定密钥文件登录
-X:打开对方服务器下带有图形化界面的应用,X11
ssh服务配置文件
服务端配置文件
/etc/ssh/sshd_config
配置文件部分参数解释:
Port 22 //指定允许登录端口22
PermitRootLogin yes //允许root用户登录
SyslogFacility AUTHPRIV //将sshd的相关日志储存在 AUTHPRIV 日志对象中
LoginGraceTime 2m //客户端将有2分钟的时间来完成身份验证,超时将断开连接
MaxAuthTries 6 //每个客户端最多6次机会进行身份验证,超过3次(半数)验证失败将被系统日志记录,超过6次连接将被拒绝
MaxSessions 10 //允许单个客户端建立最多10个会话
AuthorizedKeysFile .ssh/authorized_keys //指定ssh服务的公钥验证文件authorized_keys(锁)的的位置在每个用户的家目录下的 .ssh 目录中
可以将位置指向同一个目录方便管理例如:AuthorizedKeysFile /etc/ssh/authorized_keys/%u
%u为占位符,实际过程中会被替换为以当前用户名命名的文件夹
PubkeyAuthentication yes //允许使用密钥验证登录
PasswordAuthentication yes //允许使用密码验证登录
X11Forwarding yes //允许X11(图形界面)转发
客户端配置文件
/etc/ssh/ssh_config
Port 22 //指定登陆端口
ForwardX11Trusted yes //信任服务端通过ssh连接转发过来的X11(图形界面)连接
实例:修改ssh端口
①修改ssh服务端配置文件:vim /etc/ssh/sshd_config
②修改 Port 端口号,保存退出,重启服务,客户端无法登录
此时,客户端想要通过ssh登录服务端的方法:
①通过 [参数] -p来指定端口进行登录
②修改ssh客户端:vim /etc/ssh/ssh_config,将端口号修改为和服务端一致
ssh密钥登录
密钥文件目录(隐藏):/root/.ssh/
root为当前的登录用户,所以密钥目录在当前用户家目录 /root/ 下
生成ssh密钥:ssh -keygen
一直Enter,会在 /root/.ssh/ 目录下生成一对密钥文件:id_rsa.pub 和 id_rsa
公钥:id_rsa.pub
私钥:id_rsa
密钥原理
同一台服务器上的公钥文件 id_rsa.pub 和私钥文件 id_rsa 像是一对配套的锁和钥匙,公钥是锁,私钥是钥匙
但是只有把公钥文件的内容写入验证文件 authorized_keys 中时才能发挥锁的作用
把验证文件(锁)下在谁身上,就可以用对应的私钥文件(钥匙)开谁
实例:免密登录
使用A免密登录B
①A生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下
A生成配套的A锁(id_rsa.pub)和A钥匙(id_rsa),但此时A锁还不能起作用
②A想免密登录B,则A将自己公钥文件 id_rsa.pub 内容写进B的验证文件 authorized_keys 中
ssh-copy-id 192.168.98.137 //B的IP,过程需要输入B的密码
此时 A锁(id_rsa.pub)在 B的验证文件(authorized_keys)中开始发挥作用,相当于给B下了一个A锁(authorized_keys)
③验证使用A免密登录B
实际上,是用 A钥匙(id_rsa)去开 A锁(authorized_keys )
实例:使用远程登录工具登录
①A生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下
A生成配套的A锁(id_rsa.pub)和A钥匙(id_rsa),但此时A锁还不能起作用
②A将自己公钥文件 id_rsa.pub 内容写进A自己的验证文件 authorized_keys 中
cd /root/.ssh/
cat id_rsa.pub > authorized_keys
此时 A锁(id_rsa.pub)在 A的验证文件(authorized_keys)中开始发挥作用,相当于给A自己下了一个A锁(authorized_keys)
③将A的私钥文件 id_rsa 下载至本地,并远程工具使用该密钥登录A
实际上就是远程登录工具拿A钥匙(id_rsa)开A给自己下的A锁(authorized_keys)
实例:ssh指定密钥登录
A使用密钥登录B
①B生成密钥:ssh-keygen,密钥文件在 /root/.ssh/ 目录下
B生成配套的B锁(id_rsa.pub)和B钥匙(id_rsa),但此时B锁还不能起作用
②B将自己公钥文件 id_rsa.pub 内容写进B自己的验证文件 authorized_keys 中
cd /root/.ssh/
cat id_rsa.pub > authorized_keys
此时 B锁(id_rsa.pub)在 B的验证文件(authorized_keys)中开始发挥作用,相当于给B自己下了一个B锁(authorized_keys)
③A获取B的私钥文件id_rsa,并使用该密钥登录B
scp 192.168.98.137:/root/.ssh/id_rsa /root/ //192.168.98.137为B的IP
ssh 192.168.98.137 -i id_rsa
实际上是给A一把B钥匙(id_rsa)
A拿着B钥匙(id_rsa)去开B下在自己身上的B锁(authorized_keys)
同样的道理,使用C生成一对密钥对,把C的公钥文件内容放进B的验证文件中,然后把C的私钥文件拷贝给A,A是可以拿着C的私钥文件登录B的。
scp远程拷贝
把文件拷贝到其他服务器:scp 本地文件名 目标IP:目标存放路径
从其他服务器拷贝文件:scp 目标IP:目标文件名 本地存放路径
注意:
-r:远程拷贝目录
如果服务器之间做了免密登录,那么远程拷贝不需要密码
企业案例一
ssh远程连接服务器出现以下报错:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
7e:b5:1d:3b:1c:81:d2:6b:d2:96:f7:1a:1f:e8:16:27.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:2
RSA host key for 172.16.50.240 has changed and you have requested strict checking.
Host key verification failed.
问题:指纹不匹配
解决方法:rm ~/.ssh/known_hosts //删除当前家目录已建立过连接主机的密钥
企业案例二
在阿里云北京4区可用区二有50台服务器,这50台服务器使用同一个私有网络(10.0.0.0/24),只有一台服务器有公网IP,剩下的49台怎么连接?
50台服务器的内网IP为:10.0.0.10 - 10.0.0.60
50台服务器采用内网可以互相访问
A:私网:10.0.0.10 公网:1.98.42.123
先用远程工具连A,A采用密钥去连接在同一个内网中能够使用内网互相访问的服务器