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	    

SSH实践

posted @ 2020-05-04 10:33  看萝卜在飘  阅读(281)  评论(0编辑  收藏  举报