目录
一.ssh基础简介
1.ssh原理
2.配置文件解析
3.登录方法
4.使用ssh协议传输的命令
二.ssh免密交互连接
1、免密连接原理
2.操作流程
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。
优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
使用公钥传输
第一步:客户端请求连接,服务端返回一个公钥(专门给别人用的)和一个会话ID给客户端
第二步:客户端把服务端的公钥和自己的公钥加密发送给客户端
第三步:客户端和服务端都有对方的公钥和自己的公钥私钥
[root@ky15-1 ~]# vim /etc/ssh/sshd_config
17 Port 22
#生产建议修改
ListenAddress ip
#监听地址设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。
LoginGraceTime 2m
#用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒
PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录
StrictModes yes
#检查.ssh/文件的所有者,权限等
MaxAuthTries
#用来设置最大失败尝试登陆次数为6
MaxSessions 10
#同一个连接最大会话
PubkeyAuthentication yes
#基于key验证
PermitEmptyPasswords no
#密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。
PasswordAuthentication yes
#基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10
#单位:秒
ClientAliveCountMax 3
#默认3
UseDNS yes
#提高速度可改为no 内网改为no 禁用反向解析
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups #未认证连接最大值,默认值10
Banner /path/file
#以下可以限制可登录用户的办法:白名单 黑名单
AllowUsers user1 user2 user3@ip(限制主机)
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2
①ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port 。
例如root默认用户则可以不写,port默认22也可不写。
ssh 192.168.30.11然后输入密码即可。
①scp命令:将本机文件直接传输到对面服务器
使用格式:scp 本地文件 对面ip地址:对面接收路径
例如:scp /data/a.txt 192.168.30.12:/mnt
②sftp命令:上传或下载文件
使用格式:scp 对面ip (进去后在对面的家目录)
可以使用get下载,put上传到对面机器的家目录
第一步:手动添加客户端的公钥到服务端
第二步:服务端收到客户端的公钥后使用客户端公钥加密一串随机字符串发送给客户端
第三步:客户端收到服务端发送的加密的随机字符串使用自己的私钥解密返回给服务端进行验证
第四步:服务端验证客户端发送来的随机字符串一致则同意建立连接
基于密钥的登录方式
首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
ssh-keygen -t ecdsa
#生成密钥文件 ecdsa hasha512
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/lisi/.ssh/id_ecdsa):
Created directory '/home/lisi/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Passphrases do not match. Try again.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Passphrases do not match. Try again.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lisi/.ssh/id_ecdsa.
Your public key has been saved in /home/lisi/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:hbO1nsVS739lrS+T4lMg4NbYihnyx96e0eYFgqP6eK4 lisi@ky15-1
The key's randomart image is:
+---[ECDSA 256]---+
| |
| .. |
| .o=o . |
| . . +*++.. |
| o *S.+.+.. .|
| +.+o * o. +|
| .o .+ o.o+.|
| o. . .=o.=..|
| E=o .o.oo ++|
+----[SHA256]-----+
[lisi@ky15-1 .ssh]$ cd ~
[lisi@ky15-1 .ssh]$ ssh-copy-id -i id_ecdsa.pub [email protected]
#将公钥文件导入对方用户的 注意路径
#到对面服务器
[root@ky15 home]#cd zhangsan/
[root@ky15 zhangsan]#ls -a
. .bash_history .bash_profile .cache .mozilla
.. .bash_logout .bashrc .config .ssh
[root@ky15 zhangsan]#cd .ssh/
[root@ky15 .ssh]#ls
authorized_keys
[root@ky15 .ssh]#cat authorized_keys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKQSA9IyCq51N+pngvuFSwoBsWBlzBPn1/pI73wSB+onDfd9i81aTl+QBysQFrDfWUcxlCKniUOP0BewP5rxD+o= lisi@ky15-1
免交互登录
[lisi@ky15-1 .ssh]$ ssh-add
Enter passphrase for /home/lisi/.ssh/id_ecdsa:
Identity added: /home/lisi/.ssh/id_ecdsa (/home/lisi/.ssh/id_ecdsa)
#此处输入此前的密码
[lisi@ky15-1 .ssh]$ ssh [email protected]
Last login: Wed Sep 29 00:24:26 2021 from 192.168.91.101