shell命令--ssh

shell命令--ssh

0、ssh命令的专属图床

点此快速打开文章图床_shell命令ssh

1、ssh命令的功能说明

ssh 命令是安全的加密协议,用于远程连接 Linux 服务器,默认端口是22

SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。

ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)

ssh的客户端可以用 XSHELLSecurecrt, 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.*)

2、ssh命令的语法格式

SYNOPSIS
  ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
      [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
      [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option]
      [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
      [-w local_tun[:remote_tun]] [user@]hostname [command]

3、ssh命令的选项说明

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
        [-D [bind_address:]port] [-E log_file] [-e escape_char]
        [-F configfile] [-I pkcs11] [-i identity_file]
        [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
        [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
        [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
        [user@]hostname [command]

4、ssh命令的实践操作

范例1:Xshell 远程登陆主机

ssh root@10.0.0.99 22  -->默认端口就是22,这里演示端口号位置
ssh root@10.0.0.99

范例2:一个主机远程登陆其它主机

ip a|awk -F '[ /]+' '$NF~/eth0/ {print $3}'
ip a|awk -F '[ /]+' '$NF~/eth0/ {print $3}'
ssh 10.0.0.199
ssh -p 22 root@10.0.0.199

范例3:直接执行命令,最好全路径

ssh 10.0.0.199 /bin/ls 
ssh 10.0.0.199 hostname
hostname

范例4:查看已知主机

cat /root/.ssh/known_hosts

范例5:关于后台ssh服务的相关

查询openssl软件

rpm -qa openssh openssl

查询sshd进程和端口

ps -ef | grep ssh

查看ssh端口

netstat -lntup |grep ssh
ss | grep ssh
netstat -a | grep ssh
netstat -lnt | grep 22
netstat -lntup | grep ssh | wc -l  -->只要大于2个就是ssh服务就是好的

查看ssh的秘钥目录

ll /root/.ssh/known_hosts  -->当前用户家目录的.ssh目录下

ssh的配置文件

egrep -v '^$|#' /etc/ssh/sshd_config

范例6:免秘钥登陆,登录的时候不用使用密码

生成密钥对

ssh-keygen  -->-->连续回车
ssh-keygen -t dsa  -->也可指定验证方式,使用-t参数

Your identification has been saved in /root/.ssh/id_rsa.  -->私钥位置
Your public key has been saved in /root/.ssh/id_rsa.pub.  -->公钥位置

RSADSA 加密算法的区别

  • RSA:是一种加密算法(PS:RSA也可以进行数字签名的),它的简写的来由是 Ron RivestAdi ShamirLeonard Adleman 这三个人姓氏的第一个字母连接起来就是RSA。
  • DSA:就是数字签名算法的英文全称的简写,即 Digital Signature Algorithm ,简写就是 DSA
    RSA 既可以进行加密,也可以进行数字签名实现认证,而 DSA 只能用于数字签名从而实现认证。

也可以免交互快速生成密钥对

ssh-keygen --help  -->查看用法
mv /root/.ssh/* /tmp  -->将之前产生的密钥对移走
ssh-keygen -t rsa -f /root/.ssh/id_rsa  -P "" -q  -->免交互产生密钥对
ls /root/.ssh

拷贝密钥中的公钥文件到目标主机上

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.199  -->输入yes和目标主机root密码
scp -rp ~/.ssh/id_rsa.pub 10.0.0.199:~/.ssh/authorized_keys  -->也可以使用scp命令
ls -ld ~/.ssh/   -->特别注意权限700
ls -l ~/.ssh/   -->特别注意权限600

也可免交互拷贝公钥

rpm -qa sshpass
yum -y install sshpass &>/dev/null  -->使用此工具
rpm -qa sshpass
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.199 "-o StrictHostKeyChecking=no"  -->参数-p是可加密码

开始测试是否免秘钥

ssh 10.0.0.199 ifconfig eth0

开发脚本实现批量管理服务器简单思路

cat >cmd.sh <<'EOF'
for n in 199
do
 echo "=====10.0.0.$n======"
 ssh 10.0.0.$n "$1"
done
EOF

sh cmd.sh hostname

『MineGi有话说』:快来扫一扫下面链接的二维码,加入我们吧!

posted @ 2020-03-08 08:00  MineGi  阅读(2734)  评论(0编辑  收藏  举报