SSH远程连接服务(五)
安装和启动telnet服务
安装telnet服务: [root@backup ~]# yum -y install telnet-server 启动telnet服务: [root@backup ~]# systemctl start telnet.socket创建一个普通用户,用于测试
远程连接 telnet 不支持root 添加一个普通用户 [root@backup ~]# useradd oldboy [root@backup ~]# echo 1|passwd --stdin oldboywindows远程连接
telnet 10.0.0.41 输入用户:oldboy 输入密码:1 4. ssh相关命令 4.1 ssh命令1.提供远程连接服务器的服务、2.对传输的数据进行加密
用xshell远程登录方式
第一种使用方式 ssh 10.0.0.41(取决于当前执行此命令的用户) 连接过程中 需要输入用户名和密码信息 第二种使用方式(标准写法) ssh root@10.0.0.41 连接过程中只需要密码 第三种使用方式(带端口的方式 端口不是默认的22了) 修改ssh端口在尝试ssh远程连接 [root@backup ~]# systemctl restart sshd [root@backup ~]# grep Port /etc/ssh/sshd_config #Port 22 Port 2222 ssh root@10.0.0.41 2222 第四种连接方式 指定端口方式远程连接服务器 Linux -----------> Linux服务器 使用-p 参数指定端口号 ssh root@10.0.0.7小提示:
windows—> Linux
ssh root@10.0.0.41 # 默认连接22端口 ssh root@10.0.0.41 2222 # 指定端口连接Linux----> Linux
ssh root@10.0.0.41 # 默认连接22端口 ssh -p2222 root@10.0.0.41 # 指定端口连接 4.2 scp远程拷贝命令scp是覆盖式、增量的,与rsync远程传输方式类似
(1) scp的一些参数
-P 指定端口,默认22端口可不写 -r 表示递归拷贝目录 -p 表示在拷贝文件前后保持文件或目录属性不变 -l 限制传输使用带宽(默认kb) /8 ->KB /1024 ->MB(2)scp获取、下载
[root@backup ~]# scp root@172.16.1.31:/etc/exports ./(3)scp推送、上传
[root@backup ~]# scp exports root@172.16.1.31:/tmp/(4)限速上传的速度
带宽默认kb 80960kb➗8=10120KB➗1024=10MB 带宽为20Mb,下载速度为2.50MB/s
[root@backup ~]# scp -l 40960 1.txt root@172.16.1.31:/tmp root@172.16.1.31's password: 1.txt 100% 300MB 5.1MB/s 00:59小提示: 不管是上传文件还是目录都带上-r这样就不会错了
[root@backup ~]# scp -rp 1.txt root@172.16.1.31:/tmp 4.3 rz和sftp rz 和 sftp rz 拷贝文件效率高,不支持超过4个G以上的文件不支持断点续传 sftp 远程传输,特别适合拷贝大文件。 ssh提供的客户端命令: ssh 远程连接 (非常重要) scp 远程拷贝 (非常重要) 和 rsync的远程传输方式一模一样 (1)scp通过ssh协议加密方式进行文件或目录拷贝。 (2)scp连接时的用户作为为拷贝文件或目录的权限。 (3)scp支持数据推送和拉取,每次都是全量拷贝,效率较低。 sftp 远程传输 (一般般) Xftp xftp工具里面使用的是sftp协议 5. 在Linux中ssh的秘钥免密登录(1)生成密钥对,公钥、私钥
[root@m01 ~]# ssh-keygen -C xuliangwei@qq.com (-C可不加) Enter file in which to save the key (/root/.ssh/id_rsa):按回车 ---存放在当前用户的.ssh/id_rsa Enter passphrase (empty for no passphrase):按回车 ---问是否给当前密钥设置密码,不需要 -t是指定类型(可以省略不写) -C是说明信息(2)将公钥推送到你需要连接的主机,第一次需要输入对端主机的密码
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31 这个-i 选项值得是你所要推送公钥的位置在哪里,推动到对方的/root/.ssh/authorized.keys这个文件里面(3)通过ssh命令测试连接是否需要密码
[root@m01 ~]# ssh 172.16.1.31 Last login: Wed Jan 9 10:39:16 2019 from 172.16.1.61 [root@nfs ~]# 切换用户成功了 6. xshell中秘钥免密登录,限制root登录(安全优化)SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
1.更改远程连接登陆的端口 6666 2.禁止ROOT管理员直接登录 3.密码认证方式改为密钥认证 4.重要服务不使用公网IP地址 5.使用防火墙限制来源IP地址以上的安全策略需要修改服务端的ssh的配置文件/etc/ssh/sshd_config ,把上面的内容写在配置文件的上面,写在下面不会生效。
Port 6666 # 变更SSH服务远程连接端口√ PermitRootLogin no # 禁止root用户直接远程登录√ PasswordAuthentication no # 禁止使用密码直接远程登录√ UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数√ GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟√(1)禁止root用户远程登录,只要在配置文件中配置了,所以要创建普通用户,把xshell生成的公钥,放在oldboy用户的.ssh/authorized_keys中,注意.ssh的权限是700,authorized的权限是600。 注意: 在公司中root在/etc/sudoers 或者执行命令visudo在配置文件中书写 oldboy ALL=(ALL) NOPASSWD:/bin/su 用xhell中秘钥的形式登上普通用户后,执行sudo su - 直接切换到root
创建好之后,可以在这里查看
(2)xhell生成的公钥粘贴复制到/home/oldboy/.ssh/authorized_keys
(3) 这样跳板机用oldboy通过公钥的方式进行连接,因为在/etc/ssh/sshd_conf配置文件中设置了不允许密码登录,禁止root不能远程登录。这是用秘钥的方式登录到普通用户的oldboy,直接用sudo su - 的方式直接登录
7. 自动化脚本 监听地址: 监听本地的哪个IP 我的服务要运行在哪个IP地址上 0.0.0.0 表示网卡的所有地址 127.0.0.1 172.16.1.41 10.0.0.41 yum -y install expect [root@backup ~]# cat test.ex #!/usr/bin/expect set ip 10.0.0.31 set pass 1 set timeout 30 spawn ssh root@$ip expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$pass\r"} } interact yum -y install sshpass sshpass -p 123456 ssh root@10.0.0.31 8. 自我总结(1)echo nneettssttaatt --llnnttpp|sed -r ‘s#(.)(.)#\1#g’ 去重
(2)网络设备用telnet不用加密,网络的设备都是内部网络调试的。 xshell工具还是调用底层的ssh命令 ssh 10.0.0.41 22
(3) 在Linux的客户端使用命令:ssh 172.16.1.31 远程登录的用户是谁,取决于当前用户是谁 建议还是加上ssh root@172.16.1.31
(4)对外访问的服务器尽量改ssh的端口号,内网的为了方便 连接不用修改ssh的端口号
(5) 小文件的传输非常影响带宽,建立了很多次的tcp连接,所以 把小文件打包压缩,在进行传输就非常快了
(6)scp -r 选项是用来传输目录的,不管是不是加上-r选项,这样就不会报错。csp连接时需要知道用户的密码,不安全,拷贝的 效率非常低
(7)修改网卡小技巧 sed ‘s#200#61#g’ /etc/sysconfig/network-scripts/ifcfg-eth[01] 先看一下,然后再加上选项-i
(8)ifdown eth1 && ifup eth1 重启网卡
(9)ssh root@donglinux.com 再ssh配置文件中(/etc/ssh/sshd_config),如果禁止root登录,那么登陆完普通用户之后,能su - root吗???可以
(10)写配置文件的最上面,这样才能生效 改完端口之后 10.0.0.61 6666 再window不用加-p参数!!!! 再xshell中需要使用-p指定端口号,如果不写则默认是22端口
(11).ssh的服务权限是700 ,这样才能正常连接免密,authorized.keys的文件权限是600