ssh scp
SSH
ssh远程登录服务器
ssh -p22 root@10.0.0.61
-p指定连接远程主机端口,默认22端口可省略
-C:请求压缩所有数据
-f:后台执
-i:指定身份文件行ssh指令
-q:静默模式
# root@remotehost
# "@"前面为用户名,如果用当前用户连接,可以不指定用户
# "@"后面为要连接的服务器的IP
SCP
scp复制数据至远程主机命令(全量复制)
# -P 指定端口,默认22端口可不写
# -r 表示递归拷贝目录
# -p 表示在拷贝文件前后保持文件或目录属性不变
# -l 限制传输使用带宽(默认kb)
#推:将本地/tmp/oldboy推送至远端服务器10.0.0.61的/tmp目录,使用对端的root用户
[root@m01 ~]# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.61:/tmp
#拉:将远程10.0.0.61服务器/tmp/oldboy文件拉取到本地/opt/目录下
[root@m01 ~]# scp -P22 -rp root@10.0.0.61:/tmp/oldboy /opt/
#限速
[root@m01 ~]# scp /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31 password:
test 100% 656MB '83.9MB/s' 00:07
#限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
[root@m01 ~]# scp -rp -l 8096 /opt/1.txt root@172.16.1.31:/tmp
root@172.16.1.31s password:
test 7% 48MB '1.0MB/s' 09:45
sftp
Sftp远程数据传输命令
#默认可以通过sftp命令连接sftp服务
sftp root@10.0.0.61
sftp -oPort=52113 root@10.0.0.61 #sftp的特殊端口连接
# sftp使用get下载文件至于本地服务器
sftp> get conf.txt /tmp/
# sftp使用put上传本地服务器文件至远程服务器
sftp> put /root/t1.txt /root/
SSH验证方式
1.基于账户密码远程登录
知道服务器的IP端口,账号密码,即可通过ssh客户端命令登陆远程主机
[root@lib02 ~]# ssh root@10.0.0.5
root@10.0.0.5's password:
2.基于秘钥远程登录
ssh密匙认证
1.
-t 指定密钥类型
-C 使用-C指定用户邮箱
-i 指定公匙文件
-P:指定端口(注意位置)
-o stricthostkeychecking=no #不需要输入yes了
[root@lb01 ~]# ssh-keygen
[root@lb01 ~]# ll -a
total 84
drwx------ 2 root root 25 May 3 09:14 .ssh
[root@lb01 ~]# ll /root/.ssh
total 12
-rw------- 1 root root 1766 May 4 09:48 id_rsa
-rw-r--r-- 1 root root 391 May 4 09:48 id_rsa.pub
-rw-r--r-- 1 root root 340 May 3 09:17 known_hosts
[root@lb01 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.6
#远程连接不再需要输入密码
[root@lb01 ~]# ssh root@10.0.0.5
[root@lb01 ~]# ssh -p22 root@10.0.0.5
免交互expect
1.安装expect
[root@m01 ~]# yum install -y expect
2.编写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
免交互sshpass
1.安装sshpass
[root@m01 ~]# yum install -y sshpass
2.使用sshpass命令
[root@m01 ~]# sshpass -p 123456 ssh root@10.0.0.51
[option]
-p:指定密码
-f:从文件中取密码
-e:从环境变量中取密码
-P:设置密码提示
sshpass 的批量推送
作用:免密免yes连接
#推送过后,无论使用172.16.1.网段还是10.0.0.网段 跳板机 都可以直接连接
#!/bin/bash
pass='1'
ip='172.16.1.'
ip2='10.0.0.'
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
for i in 5 6 7 8 9 31 41 51 52 53 54 61 200;
do
sshpass -p $pass ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no root@${ip}${i}
sshpass -p $pass ssh-copy-id -i /root/.ssh/id_rsa.pub -o stricthostkeychecking=no root@${ip2}${i}
done
chmod 600 /root/mjh.sh