linux系统ssh基本⽤法
ssh协议
1. ssh的基本⽤法
## 连接远程登录
ssh [选项] [⽤户名@]主机名或IP
例:m01连接172.16.1.41的root⽤户
[root@m01 ~]# ssh root@172.16.1.41 -p 22
ssh的端⼝是22 -p :指定端⼝
#远程执⾏命令
在172.16.1.41上⾯执⾏ls命令
[root@nfs ~]# ssh root@172.16.1.41 ls
# 以上两种都需要知道密码
2. ssh的免密登录
##1. ssh-keygen命令
ssh-keygen命令是⽤来产⽣⼀对公共/私⼈⾝份验证密钥的。这对⾝份验证密钥允许⼀个⽤户在不提供密码的情况下连接到⼀个远程系统上。每个⽤户必须单独地产⽣密钥。
选项 -t :指定所创建密钥的类型,在第⼀版的协议中可能的值是rsa1,⽽在第⼆版的协议中可能的值为dsa,ecdsa或rsa
# 执⾏ssh-keygen命令
[root@m01 ~]# ssh-keygen
ssh-keygen命令会在~/.ssh⽬录(⽤户的家⽬录中的.ssh⽬录)中⽣成id_rsa和id_rsa.pub两个密钥⽂件
# 将密钥⽂件id_rsa.pub复制到远程ip的服务器实现免密登录
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31
ssh-copy-id 命令加-i 选项将m01的id_rsa.pub密钥发送到172.16.1.31,这样以后就可以免密登录了
# ssh 免密登录
[root@m01 ~]# ssh root@172.16.1.41
Last login: Mon May 11 16:23:35 2020 from 172.16.1.61
[root@backup ~]#
## 2.编辑配置⽂件放⼊跳板机密钥
# 创建/root/.ssh⽬录
[root@nfs ~]# mkdir /root/.ssh
# ⽬录授权700权限
[root@nfs ~]# chmod 700 /root/.ssh
# 编辑配置⽂件
[root@nfs ~]# vim /root/.ssh/authorized_keys
#查看配置⽂件内容有没有空⾏
[root@nfs ~]# cat -A /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWiiQkJhlODst3y4332otd0YwQSrIAmDq0opz5cRr1QNofvbgWBoK9D20opkAGu8Fqr5LzqoALjbX73x6trZgPhWh7i0RO2qYAjxiZe7bX4HppqjCO3KlP9BnNTa0Uc0LIgko5aE2ips9nHyQHVl8xvc1g # 授权配置⽂件600权限
[root@nfs ~]# chmod 600 /root/.ssh/authorized_keys
# 使⽤m01远程连接nfs服务器
[root@m01 .ssh]# ssh 172.16.1.31
Last login: Tue May 12 03:59:14 2020 from 10.0.0.1
抓包⼯具
## 下载⽹址
/download.html
# 使⽤telnet协议登录
telnet不能⽤root⽤户登录,必须使⽤普通⽤户
# 下载telnet
[root@web01 ~]# yum install -y telnet-server
# 启动服务
[root@web01 ~]# systemctl start telnet.socket
# 查看端⼝
[root@web01 ~]# netstat -lntup|grep 23
tcp6 0 0 :::23 :::* LISTEN 1/systemd # 创建普通⽤户
[root@web01 ~]# useradd wzh
# 给密码
[root@web01 ~]# passwd wzh
Changing password for user wzh.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
# 连接
# 打开wireshark,到NAT8的⽹卡,输⼊telnet,然后⿏标右键追踪流
ssh⽣产场景案例
写脚本跳板机连接其他服务器
# 此处复制粘贴曾⽼师⽂档脚本内容
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
cat <<EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
linux使用vim编辑文件| 8) db01 |
| 9) m01 |
| 10) zabbix |
| h) help |
+-------------------------+
EOF
read -p 'Please Input Number: ' num
if [ $num -eq 1 ];then
ssh root@$lb01
elif [ $num -eq 2 ];then
ssh root@$lb02
elif [ $num -eq 3 ];then
ssh root@$web01
elif [ $num -eq 4 ];then
ssh root@$web02
elif [ $num -eq 5 ];then
ssh root@$web03
fi
1. m01 10.0.0.61 克隆m01
2. 在m01上免密连接其他所有机器
3.尝试写⼀个跳板机的脚本
1.1 克隆m01 , 外⽹ip :10.0.0.61 内⽹ip :17
2.16.1.61
# 1.打开优化好的专门⽤来做克隆机器的模板机
# 2.右键管理-克隆-下⼀步-从优化好的快照-创建连接克隆-虚拟机名称-存放虚拟机的⽬录-完成# 3.点击运⾏虚拟机-输⼊⽤户⾝份-密码-sh运⾏host_ip脚本-输⼊61-回车-m01-回车
#脚本内容
#!/bin/bash
old_ip=`hostname -I|awk -F '[. ]+' '{print $4}'`
read -p 'Please Input Your New IP: ' new_ip
read -p 'Please Input Your New HostName: ' new_h
sed -i "s#$old_ip#$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-eth{0,1}
hostnamectl set-hostname $new_h
systemctl restart network
2.1在m01上免密连接其他机器
# m01连接xshell,之后输⼊ssh-keygen获取密钥
[root@backup ~]# 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:/EqWyYEHa6Hopk1k3UwCb1wP11iM6nRev6SPGy+uvTU root@backup
The key's randomart image is:
+---[RSA 2048]----+
| . o .*. |
| + . +o o |
| = +.. |
| + *o*. . |
| + oo*oS. . |
| + ..o.= o |
| + * ooE. |
| = o oo=.. |
|. . oo*=o |
+----[SHA256]-----+
#使⽤ssh-copy-id 命令把密钥传送给其他服务器
[root@m01 .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.8
# 连接
[root@m01 .ssh]# ssh 172.16.1.8
Last login: Tue May 12 04:02:29 2020 from 172.16.1.61
[root@web02 ~]#
# 连接其他服务器和上⾯命令相同,改⼀下后⾯的ip即可
3.1尝试写⼀个跳板机的脚本
# 复制曾⽼师⽂档
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
cat <<EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
| 8) db01 |
| 9) m01 |
| 10) zabbix |
| h) help |
+-------------------------+
EOF
read -p 'Please Input Number: ' num
if [ $num -eq 1 ];then
ssh root@$lb01
elif [ $num -eq 2 ];then
ssh root@$lb02
elif [ $num -eq 3 ];then
ssh root@$web01
elif [ $num -eq 4 ];then
ssh root@$web02
elif [ $num -eq 5 ];then
ssh root@$web03
fi
ssh基础优化
## 修改配置⽂件
[root@m01 ~]# vim /etc/ssh/sshd_onfig
1.1 修改端⼝
端⼝范围1-65535,但是不能占⽤常⽤端⼝,建议修改为五位数的端⼝
Port 55566
1.2 不允许root⽤户登录
PermitRootLogin no
1.3 禁⽌密码登录
PasswordAuthentication no
1.4 不使⽤DNS反向解析
UseDNS no
1.5 不使⽤GSSAPI认证
GSSAPIAuthentication no
# 名词
反向解析:把IP解析成域名叫做反向解析,正向解析把域名解析成IP
# 改完之后重启服务
[root@m01 ~]# systemctl restart sshd
## 免交互
1.1 下载安装包
[root@nfs ~]# yum install -y expect
# 编辑脚本代替⼿敲,脚本复制曾⽼师⽂档
#!/usr/bin/expect
set ip 10.0.0.51
set pass 123456
set timeout 30
spawn ssh root@$ip
expect {
"(yes/no)" {send "yes\r"; exp_continue}
"password:" {send "$pass\r"}
}
expect "root@*" {send "df -h\r"}
expect "root@*" {send "exit\r"}
expect eof
# 下载安装包
[root@nfs ~]# yum install -y sshpass
#连接 -p:定密码。sricthostkeychecking=no:取消认证
sshpass -p 1 ssh -o stricthostkeychecking=no root@10.0.0.41
#写脚本批量免密连接
[root@nfs ~]# vim mianmi.sh
#!/bin/bash
for ip in 31 41 7 8 61 ;do
sshpass -p 1 ssh-copy-id -i ~/.ssh/id_rsa.pub -o stricthostkeychecking=no root@172.16.1.$ip done
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论