ssh命令详解
SSH(远程连接⼯具)连接原理:ssh服务是⼀个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端⼝),包括公共秘钥等交换等信息。
ssh服务端由2部分组成: openssh(提供ssh服务)    openssl(提供加密的程序)
ssh的客户端可以⽤ XSHELL,Securecrt, Mobaxterm等⼯具进⾏连接
SSH的⼯作机制
服务器启动的时候⾃⼰产⽣⼀个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对
key(1024bit),发回给服务器端,建⽴连接通过key-pair数据传输。
SSH的加密技术
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进⾏校验,很容易被植⼊恶意代码
2.SSH2增加了⼀个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免⿊客⼊侵。
SSH2⽀持RSA和DSA密钥
DSA:digital signature Algorithm  数字签名
RSA:既可以数字签名⼜可以加密
SSH知识⼩结
1.SSH是安全的加密协议,⽤于远程连接Linux服务器
2.SSH的默认端⼝是22,安全协议版本是SSH2
3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
4.SSH客户端包含ssh连接命令和远程拷贝scp命令等
如何防⽌SSH登录⼊侵
1.密钥登录,更改端⼝
2.牤⽜阵法
3.监听本地内⽹IP(ListenAddress 192.168.25.*)
SSH功能⼤全
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 191.登录
ssh-p22 omd@192.168.25.137
2.直接执⾏命令  -->最好全路径
ssh root@192.168.25.137 ls-ltr /backup/data
==>ssh root@192.168.25.137 /bin/ls-ltr /backup/data
3.查看已知主机
cat/root/.ssh/known_hosts
4.ssh 远程执⾏ sudo 命令
ssh-t omd@192.168.25.137 sudo rsync hosts /etc/
5.scp
1.功能  -->远程⽂件的安全(加密)拷贝
scp-P22 -r -p /home/ omd@192.168.25.137:/home/omd/
2.scp 知识⼩结
scp 是加密远程拷贝, cp 为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不⾼,适合第⼀次),增量拷贝⽤ rsync
19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 346.ssh ⾃带的 sftp 功能
1.Window和Linux的传输⼯具
wincp  filezip
sftp-->基于 ssh 的安全加密传输
samba
2.sftp 客户端连接
sftp-oPort=22 root@192.168.25.137
put /etc/hosts/tmp
get /etc/hosts/home/omd
3.sftp ⼩结:
1.linux下使⽤命令: sftp-oPort=22
2.put加客户端本地路径上传
<下载服务器端内容到本地
4.远程连接默认连接⽤户的家⽬录
ssh常见命令参数
1 2 3 4 5 6 7usage: ssh[-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname[command]
关于后台ssh服务的相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28# 查询openssl软件
rpm -qa openssh openssl
# 查询sshd进程
ps-ef | grep ssh
--> /usr/sbin/sshd
# 查看ssh端⼝
netstat-lntup | grep ssh
ss | grep ssh(效果同上,同下,好⽤)
netstat-a | grep ssh(记住这个)cipher命令
netstat-lnt | grep22    ==>  查看22端⼝有没有开 /ssh 服务有没有开启
技巧: netstat-lnt | grep ssh| wc-l -->只要⼤于2个就是 ssh 服务就是好的
# 查看ssh的秘钥⽬录
ll /root/.ssh/known_hosts# 当前⽤户家⽬录的.ssh⽬录下
# ssh的配置⽂件
cat/etc/ssh/sshd_config
# ssh服务的关闭
service sshd stop
# ssh服务的开启:
service sshd start
# ssh服务的重启
service sshd reload    [停⽌进程后重启] ==> 推荐
service sshd restart  [⼲掉进程后重启] ==> 不推荐
# ssh远程登录
ssh192.168.1.100      # 默认利⽤当前宿主⽤户的⽤户名登录
ssh omd@192.168.1.100  # 利⽤远程机的⽤户登录
ssh omd@192.168.1.100  -o stricthostkeychecking=no # ⾸次登陆免输yes登录
ssh omd@192.168.1.100 "ls /home/omd"# 当前服务器A远程登录服务器B后执⾏某个命令
ssh omd@192.168.1.100 -t "sh /home/omd/ftl.sh"# 当前服务器A远程登录服务器B后执⾏某个脚本
ssh免密设置
1、进⼊⽤户的家⽬录
1 2[root@localhost ~]# cd /root/.ssh/            【root⽤户就在root⽬录下的.ssh⽬录】[root@localhost ~]# cd /home/omd/.ssh/  【普通⽤户就是在家⽬录下的.ssh⽬录】
2、根据DSA算法⽣成私钥和公钥【默认建⽴在当前⽤户的家⽬录】
1 2 3[root@localhost .ssh]# ssh-keygen -t dsa    # ⼀路回车即可id_dsa        -->私钥(钥匙)
id_dsa.pub    -->公钥(锁)
3.拷贝公钥给⽬标服务器
1 2[root@localhost .ssh]# ssh-copy-id -i id_dsa.pub omd@192.168.25.110              【使⽤ssh登录的默认端⼝22】[root@localhost .ssh]# ssh-copy-id -i id_dsa.pub –p 666 omd@192.168.25.120  【使⽤ssh登录设置的端⼝666
4. 查看⽬标服务器⽣成的⽂件
1[omd@localhost .ssh]$ ll /home/omd/.ssh/authorized_keys
5. 免密码登录⽬标服务器
1ssh omd@192.168.25.110
6. 总结⼀下钥匙和锁的关系
1 2 3 4 5 61.多个钥匙开⼀把锁
把id_dsa.pub 复制给各个服务器
2.⼀个钥匙开duobasuo
把id_dsa 传给各个服务器
把id_dsa 传给⾃⼰
ssh排查问题
1 2 31.判断物理链路是否通  ping192.168.25.130    线路 | 防⽕墙 | 是否同⼀个⽹的
ping  本⾝是icmp协议
2.判断服务是否正常
1telnet 192.168.25.130 22
1  3.Linux防⽕墙
1service iptables status ==>  /etc/init.d/iptables status  1  4.打开 ssh 的调测进⾏观察
1ssh-vvv omd@192.168.1.100
SSH批量分发与管理⽅案⼩结
1.利⽤root做ssh key验证
优点:简单,易⽤
缺点:安全性能差,⽆法禁⽌root远程连接
2.利⽤普通⽤户omd                -->推荐
思路:把要分发的⽂件拷贝到服务器⽤户的家⽬录,然后利⽤sudo提权拷贝分发的⽂件和对应⽬录    优点:安全
缺点:复杂,配置⿇烦
1.sudo提权
echo 'omd    All=(All)      NOPASSWD:/usr/bin/rsync' >> /etc/sudoers
visudo -c
grep omd /etc/sudoers
2.ssh分发到服务器的家⽬录
ssh -p22 -r /etc/hosts omd@192.168.25.137:~
3.ssh使⽤sudo复制到⽬标服务器的/etc
ssh -t omd@192.168.25.137 sudo rsync hosts /etc/
3.拓展⽅案2,不⽤sudo,⽽是设置suid对固定命令提权
优点:相当安全
缺点:复杂,安全性较差,任何⼈都可以处理带有suid权限的命令
1.which rsync
2.chmod 4755 /usr/bin/rsync
ssh章节⼩结
1.ssh远程的加密连接协议,相关软件openssh,openssl
2.默认端⼝22
3.ssh版本协议
4.服务器ssh连接,ftp连接,sshd守护进程,开机启动
5.ssh客户端重要命令:ssh(⽤户登录&&远程命令),scp,sftp,
6.安全验证⽅式:⼝令,密钥  学习原理
7.ssh服务优化:改端⼝,改监听,no root,no empty,no DNS,
8.ssh密钥对,公钥在服务器端,私钥在客户端
修改ssh服务的启动⽂件sshd的⼏个点
1 2 3 4 5 6 7 8 91-1修改 /etc/ssh/sshd_config<br>        GSSAPIAuthentication yes    解决⼀台服务器管理多个 ssh 服务UseDNS no  加快响应速度因为在内⽹环境下
PermitRootLogin no  不运⾏root⽤户直接登录
Port 11544 更改访问端⼝号
ListenAddress  192.168.25.130  只监听内⽹的IP
Match User anoncvs    当前环境允许登录的⽤户
PermitRootLogin no      是否允许root⽤户登录,⼀般不允许开
1-2重启服务
service sshd restart      写⼊命令进内存
10 11 12
service sshd reload(优先)  reload是⼀个平滑的访问,不影响⽤户使⽤1-3查看连接端⼝
netstat-an | grep EST
SSH跳过HostKeyChecking,不⽤输⼊yes
SSH跳过输⼊ssh跳过RSA key fingerprint输⼊yes/no
在配置⼤量的节点之间需要ssh连通的时候,如果⾃动复制很多节点,都需要输⼊yes,两两节点之间都要互通⼀次,这样会造成很⼤的⿇烦
解决1;修改配置⽂件/etc/ssh/ssh_config
1 2到  # StrictHostKeyChecking ask  修改为:StrictHostKeyChecking no
解决2: 添加参数 –o  【o=option】
1
ssh root@192.168.25.133 -o "StrictHostKeyChecking no"
1scp -o "StrictHostKeyChecking <a href="mailto:root@192.168.25.133/root"
>root@192.168.25.133:/root</a> ssh带密码登录之sshpass的安装
上传⽂件到服务器
CentOS下安装:
1 2 3 4[root@localhost ~]# tar xf sshpass-1. [root@localhost ~]# cd sshpass-1.06
[root@localhost sshpass-1.06]# ./configure
[root@localhost sshpass-1.06]# make && make install

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。