ssh远程管理服务
ssh协议是一个安全协议,在数据传输时,会对数据包进行处理,为了确保数据安全,ssh服务的主要功能:
1、提供远程连接服务器的服务
linux远程:ssh 端口22
windows rdp协议 端口3389
2、对传输的数据进行加密
telnet
#安装
[root@aliyun ~]# yum install telnet-server
#启动
systemctl start telnet.socket
#注意:
1、telenet只能是普通用户连接,不可以是root
2、ssh支持root用户登录
3、telnet数据传输过程是明文的,ssh数据传输是加密的
SSH相关的命令
属于c/s架构,ssh客户端支持windows。Linux。mac等平台
#语法
ssh [用户]@[IP]
yes(首次连接)
#如果连接时不指定用户,则默认当前的用户
#参数
-p #指定端口
22 #端口
-o StrictHostKeyChecking=no #首次连接不询问(还是输yes吧,兄弟)
#x-shell连接不上服务器怎么办
1、查网络
ping [服务器IP]
2、查看网卡 ip a/ifconfig
3、查端口
telnet ip 22端口
4、检查sshd服务是否启动
5、防火墙
SSH验证方式
基于账户密码远程登录
知道服务器的端口,用户,密码,即可通过ssh客户端命令去连接
#设置密码
1、如果太难,会记不住
2、如果太简单,容易被破解
3、每台服务器的密码不一样
4、密码是动态的
5、密码三个月修改一次
6、密码错误三次锁定用户
7、密码是没有规律的
基于密钥远程登录
#1、生成密钥对
[root@test1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:a9px1MJdpoWw8xfk7xmEyVIJFJ4oqFvTEUbV/nUogSs root@test1
The key's randomart image is:
+---[RSA 2048]----+
| .+..+=o.o |
| o . ++==o |
| . o .+=.=*o |
| . . E..*o=o+.|
| . o .S.+ *.o.o|
| o . o . o .o|
| . + . ..|
| + o |
| . . |
+----[SHA256]-----+
#将公钥发送到免密登录的服务器(长的)
[root@test1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.15.102
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.15.102's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.15.102'"
and check to make sure that only the key(s) you wanted were added.
#测试连接
[root@test1 ~]# ssh 192.168.15.102
Last login: Tue Mar 30 20:32:22 2021 from 192.168.15.1
[root@web1 ~]#
powershell与跳板机连接
1、在powershell下执行ssh-keygen
2、在windows下找到公钥(参考返回的路径)
3、将公钥内容复制到跳板机上,并授权
[root@test1 ~]# vim .ssh/authorized_keys
[root@test1 ~]# chmod -R 600 .ssh/authorized_keys
4、自行测试(这里ip前要加root)
ssh root@[ip]
xshell免密登录跳板机
1、打开xshell找工具栏中的 工具/新建密钥生成向导/
2、选择加密文件类型和位数,下一步
3、生成密钥对成功,下一步(名字写的有点针对性)
4、给密钥配置信息、名字、密码...
5、属性/公钥/
6、复制公钥内容到跳板机上
[root@test1 ~]# mkdir .ssh
[root@test1 ~]# chmod 700 .ssh #密码文件夹授权700
[root@test1 ~]# cd .ssh/
[root@test1 ~]# cat >authorized_keys<<EOF
[root@test1 ~]# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABANnz3WrIVjC3rqriyL1U4WnV3UtJZoedoOnSPrA04MDiEEUCq38igG4Uwf
[root@test1 ~]# chmod 600 authorized_keys #密码文件授权600
自行测试
#方法二
在新机上创建新用户,推送给新用户的家目录下,稳定,不易出错
ssh-copy-id -i ~/.ssh/id_rsa.pub jump@192.168.15.41
跳板机模板(加入环境变量开机自启动)
#!/bin/bash
#jumpserver
lb01=172.16.1.5
lb02=172.16.1.6
web01=172.16.1.7
web02=172.16.1.8
web03=172.16.1.9
nfs=172.16.1.31
backup=172.16.1.41
db01=172.16.1.51
m01=172.16.1.61
zabbix=172.16.1.71
menu(){
cat <<-EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
| 8) db01 |
| 9) m01 |
| 10) zabbix |
| c) clear |
+-------------------------+
EOF
}
#连接函数
connect(){
ping -c 1 -w 1 $1 &>/dev/null
if [ $? -eq 0 ];then
ssh jump@$1
else
echo -e " 33[1;35;40m 别连了,我的哥,$2:$1机都没开连你妈!!! 33[0m"
fi
}
#控制不让输入ctrl+c,z
trap "" HUP INT TSTP
while true
do
menu
read -p "请输入要连接的主机编号:" num
case $num in
1|lb01)
connect $lb01 lb01
;;
2|lb02)
connect $lb02 lb02
;;
3|web01)
connect $web01 web01
;;
4|web02)
connect $web02 web02
;;
5|web03)
connect $web03 web03
;;
6|nfs)
connect $nfs nfs
;;
7|backup)
connect $backup backup
;;
8|db01)
connect $db01 db01
;;
9|m01)
connect $m01 m01
;;
10|zabbix)
connect $zabbix zabbix
;;
c|clear)
clear
;;
爸爸)
break
;;
esac
done
SSH安全优化
SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
#更改配置 vim /etc/ssh/sshd_config
1.更改远程连接登陆的端口
Port xxx
2.禁止ROOT管理员直接登录
PermitRootLogin no
#注意:如果不想你的服务器与世隔绝,请验证是否有其余用户,其余用户是否有秘钥,这一点很重要!
3.密码认证方式改为密钥认证
PasswordAuthentication no
4.重要服务不使用公网IP地址
5.使用防火墙限制来源IP地址
6.关闭反向解析,开启会影响效率
UseDNS no
#注意:修改完成后记得重新启动sshd让他生效哦!
scp
类似于rsync,远程拷贝,scp是全量,rsync是增量
scp推:
#文件
scp [文件] root@[ip]:/tmp/
#如果不指定用户的话,默认是root
#目录
scp -r /etc root@[ip]:/tmp/
#注意:
1、与rsync不同,推送时不加/或者不加,推的都是目录
2、如果想要推送目录下的文件,用/*
scp拉:
#scp root@[ip]:/tmp/* ./
#注意:
1、与rsync不同,拉取时不加/或者不加,推的都是目录
2、如果想要拉取目录下的文件,用/*
参数
-r 递归
-P 指定端口,默认22
-p 表示在拷贝文件时保持文件或目录属性不变
-l 显示传输使用的带宽(默认是KB)
总结
1、scp通过ssh协议加密方式进行文件或者目录的拷贝
2、scp连接时的用户作为拷贝文件或目录的权限
3、scp支持数据推送和拉取,每次都是全量拷贝,效率较低
sftp
终端连接服务器推送
1、连接终端
sftp [ip]
2、下载
get [文件]
3、上传
put 选择文件
服务器之间连接用ftp
1、连接终端
sftp [ip]
2、操作本机,在目录前面加l,不加默认操作远程
3、下载
get [文件] /opt #在linux下可以指定目录拉取
4、上传
put 选择文件
文件传输工具
1、xftp
2、filezilla
3、flashfxp
命令
sz/rz
不能上传大于4G以上的文件
不能断点续传
不能上传文件夹
sftp(能不用就不用,贼鸡肋)
能大于4G
支持断点续传
可以上传文件夹