SSH远程管理服务简介 端口号查询 SSH相关命令 秘钥 SSH安全优化 跳板机脚本及跳板机退出

本文主要是介绍SSH远程管理服务简介 端口号查询 SSH相关命令 秘钥 SSH安全优化 跳板机脚本及跳板机退出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • SSH远程管理服务简介
      • 端口号查询
      • ssh和telnet区别
      • SSH相关命令
      • ssh
      • Xshell连接不上虚拟机
      • scp命令(远程文件传输)
      • sftp命令
      • 秘钥
      • ssh-keygen 生成秘钥对
      • ssh-copy-id 推送公钥到要免密连接的服务器
      • SSH免密场景
      • 1.windows使用xshell生成秘钥对
        • 1)xshell-->工具-->新建用户秘钥生成向导
      • 2)生成秘钥对
        • 3)创建秘钥名字,不需要给秘钥创建密码
        • 4)查看秘钥对的私钥公钥
        • 5)将公钥复制到m01机器 私钥保存到windows电脑
      • 免交互expect[扩展]
      • 安装expect
      • 编写免密操作脚本
      • 免交互sshpass[扩展]
      • 安装sshpass
      • sshpass命令
      • 编写sshpass脚本
      • SSH安全优化
      • ssh远程管理服务器
      • 对内网所有的机器进行免密
      • 跳板机脚本
      • 跳板机退不出解决办法

SSH远程管理服务简介

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后再进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?
1.提供远程连接服务器的服务linux远程连接协议:ssh 22   telnet 23windows远程连接协议:RDP(remote desktop)3389
2.对传输进行加密

端口号查询

在这里插入图片描述

#1.安装telnet
[root@nfs ~]# yum install -y telnet-server#2.启动telnet
[root@nfs ~]# systemctl start telnet.socket#  查看端口
[root@nfs ~]# netstat -nutlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:49869           0.0.0.0:*               LISTEN      6936/rpc.statd      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      7340/rpcbind        
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN        -                   
tcp6       0      0 :::22                   :::*                    LISTEN      6613/sshd           
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd #3.创建普通用户
[root@nfs ~]# useradd yangge
[root@nfs ~]# echo 123 | passwd --stdin yangge#4.验证登录
[c:\~]$ telnet 192.168.15.31 23
Connecting to 192.168.15.31:23...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Kernel 3.10.0-957.el7.x86_64 on an x86_64
nfs login: yangge
Password: 
[yangge@nfs ~]$ 

ssh和telnet区别

telnet:1.不支持root直接登录,只能用普通用户2.数据传递是明文的ssh:1.主要用来远程登录和执行命令,ssh默认使用当前用户登录。2.所有数据传递都是加密的

SSH相关命令

SSH有客户端与服务端,我们将这种模式称为C|S架构,ssh客户端支持Windows、Linux、Mac等平台。在ssh客户端中包含 ssh|slogin远程登陆、scp远程拷贝、sftp文件传输、ssh-copy-id秘钥分发等应用程序。

ssh

[root@web01 ~]# ssh -p 22 root@10.0.0.31
ssh				#命令
-p				#指定端口(在终端无法使用)
22				#指定ssh协议端口
root			#连接时使用的用户(如果不写用户,默认使用当前服务器当前用户)
@				#分隔符
10.0.0.31		#远端服务器IP-o StrictHostKeyChecking=no		#登录时跳过验证身份

Xshell连接不上虚拟机

#1.查网络,连接谁就ping谁
ping 10.0.0.31
tcping 10.0.0.31 22#2.查端口
telnet 10.0.0.31 22
tcping 10.0.0.31 22#3.如果可以ping通,端口不通
需要检测服务端口
netstat -lntp | grep sshd#4.网卡是否启动
ip a#5.防火墙
查看防火墙规则是否允许ssh服务
firewall-cmd --list-all#6.查看虚拟网络编辑器
查看网关是否正确#7.查看电脑的VMnat8网卡,配置信息是否正确

scp命令(远程文件传输)

scp客户端命令:远程拷贝
scp类似于rsync
scp全量		rsync增量#scp支持推和拉
#推:将本地的/etc目录推送到backup服务器的/tmp目录下
[root@nfs ~]# scp -r /etc/ root@172.16.1.41:/tmp/
#将将本地的/etc目录下的文件推送到backup服务器的/tmp目录下
[root@nfs ~]# scp -r /etc/* root@172.16.1.41:/tmp/#拉:将远端172.16.1.41服务器的/etc目录拉取到本地的/tmp目录下
[root@nfs ~]# scp -r root@172.16.1.41:/etc /tmp/-P  指定端口,默认是22
-p	保持传输文件属性不变
-r	表示递归拷贝目录
-l	限速#-l 限速  单位是 kb
[root@nfs ~]# dd if=/dev/zero of=./1.txt bs=1M count=500
[root@nfs tmp]# scp file root@172.16.1.41:/backup/
root@172.16.1.41's password: 
file    46%  234MB  14.5MB/s   00:18#设置速度为10M   10*1024*8=81920
[root@nfs tmp]# scp -l 81920 file root@172.16.1.41:/backup/

sftp命令

#文件传输命令
[root@web01 ~]# sftp root@10.0.0.31
#查看连接后服务器
sftp> ls
#查看本地服务器
sftp> lls#命令     远程服务器文件   本地服务器位置
sftp> get 1_nfs.gif ./
#命令     本地服务器文件   远程服务器位置
sftp> put /data/1_nfs.gif /tmp/#图形界面: Xftp   FileZilla  FlashFXPsftp:1.能上传文件夹2.能支持断点续传3.支持上传大于4G的文件rz:1.不能上传文件夹2.不支持断点续传3.只能上传小于4G的文件

秘钥

默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式

ssh-keygen 生成秘钥对

-t		指定秘钥类型 rsa  dsa
-C		指定用户邮箱[root@m01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:f/QWh5uWzIqREAPqA+mnjUqBXrDjJm49tqkDHCQ8n88 root@m01
The key's randomart image is:
+---[RSA 2048]----+
|.     .          |
|.+ . . .         |
|o.= o   o        |
|.oo=     o     . |
|o+o.*   S   . o .|
|+.+= E   o o + * |
|o=+ .     + . X  |
|=+ +.      + +   |
|oo+oo     . .    |
+----[SHA256]-----+
[root@m01 ~]# cd .ssh
[root@m01 .ssh]# ll
total 8
-rw------- 1 root root 1675 Apr 23 20:17 id_rsa   #私钥
-rw-r--r-- 1 root root  390 Apr 23 20:17 id_rsa.pub #公钥

在这里插入图片描述

ssh-copy-id 推送公钥到要免密连接的服务器

#方式一:手动复制公钥
[root@m01 .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y35Qi3cfJm7Yl7jtnhN/E2bHaRxlx4Sff+ueLhS4IiewPwdywg/iG77HA8TIPBgnoW62PecNeuDn322KDo3qTzBMjmXIY6AT4D2sDpEjhhN7JmeQ/uSKaGAQQUMcnW2YRPwgaFCZEGR5XjeD7BQAGxBYsx6TjFKOn55WfKBFHLQSO3jXv+2y1yil0s3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@m01#把公钥复制到要连接的服务器
[root@web01 ~]# mkdir .ssh/
[root@web01 ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvokaPfSni0HC+tppFKrKuYrSH41D1Y35Qi3cfJm7Yl7jtnhN/E2bHaRxlx4Sff+ueLhS4IiewPwdywg/iG77HA8TIPBgnoW62PecNeuDn322KDo3qTzBMjmXIY6AT4D2sDpEjhhN7JmeQ/uSKaGAQQUMcnW2YRPwgaFCZEGR5XjeD7BQAGxBYsx6TjFKOn55WfKBFHLQSO3jXv+2y1yil0s3hK7iBhiCCMRc34oBgMh1aMZQekUf8CgUlSwtR3RdgKzKP68L5R/ggmZzGYZ5UOstJd0Vw1I14kZEaBHIF734tdNYbEcv8CXFku1iQzKrwkIs4FX7k3TxogI4XcE+/ root@m01
[root@web01 ~]# chmod 700 .ssh/
[root@web01 ~]# chmod 600 .ssh/authorized_keys
#方式二:命令推送公钥
[root@m01 .ssh]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
/usr/bin/ssh-copy-id: ERROR: failed to open ID file '.ssh/id_rsa.pub': No such file or directory
[root@m01 .ssh]# cd 
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.31
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.1.31's password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh '172.16.1.31'"
and check to make sure that only the key(s) you wanted were added.
#验证
[root@m01 ~]# ssh 172.16.1.31
Last login: Fri Apr 23 19:50:32 2021 from 192.168.15.1
[root@nfs ~]# #公钥传输到这个文件
[root@nfs ~]# cd .ssh
[root@nfs .ssh]# ll
total 4
-rw------- 1 root root 390 Apr 23 20:23 authorized_keys#配置文件所在目录
[root@nfs .ssh]# vim /etc/ssh/sshd_config 
AuthorizedKeysFile      .ssh/authorized_keys# 注:只给当前用户传输公钥#登录留痕
[root@m01 .ssh]# ll
total 12
-rw------- 1 root root 1675 Apr 23 20:17 id_rsa
-rw-r--r-- 1 root root  390 Apr 23 20:17 id_rsa.pub
-rw-r--r-- 1 root root  173 Apr 23 20:20 known_hosts
[root@m01 .ssh]# cat known_hosts 
172.16.1.31 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB1c8Kpnc5NjQ8I84CIVi7pjzvGNp5xoDqpNcWzG4DPTuSmbWduLCps6n00Gw6tirhkn0Rnt74BAhvWAgJQqYgw=

SSH免密场景

实践场景,用户通过Windows/MAC/Linux客户端连接跳板机免密码登录,跳板机连接后端无外网的Linux主机实现免密登录,架构图如下。
实践多用户登陆一台服务器无密码
实践单用户登陆多台服务器免密码

1.windows使用xshell生成秘钥对

1)xshell–>工具–>新建用户秘钥生成向导

在这里插入图片描述

2)生成秘钥对

在这里插入图片描述

3)创建秘钥名字,不需要给秘钥创建密码

在这里插入图片描述

4)查看秘钥对的私钥公钥

在这里插入图片描述

在这里插入图片描述

5)将公钥复制到m01机器 私钥保存到windows电脑
[root@m01 ~]# mkdir .ssh/
[root@m01 ~]# vim .ssh/authorized_keys
[root@m01 ~]# chmod 600 .ssh/authorized_keys

免交互expect[扩展]

安装expect

[root@m01 ~]# yum install -y expect

编写免密操作脚本

[root@m01 ~]# cat expect.exp 
#!/usr/bin/expect
set ip 10.0.0.7
set pass 1
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
[root@m01 ~]#

免交互sshpass[扩展]

安装sshpass

[root@m01 .ssh]# yum install -y sshpass

sshpass命令

[root@m01 .ssh]# sshpass -p 1 ssh root@172.16.1.7
sshpass	命令
-p		指定密码
1		密码
ssh		连接命令
root	用户
@		分隔符
172.16.1.7	主机

编写sshpass脚本

[root@m01 .ssh]# vim ssh.sh 
#!/bin/bash
for num in 41 31 7;doecho ------------------ 10.0.0.$num -----------------sshpass -p 1 ssh -o StrictHostKeyChecking=no root@10.0.0.$num df -h
done

SSH安全优化

SSH作为远程连接服务,通常我们需要考虑到服务的安全,所以需要对服务进⾏安全⽅⾯的配置。1、更改远程登陆的端⼝[root@backup ~]# vim /etc/ssh/sshd_config Port 22222、禁⽌root管理员直接登录[root@backup ~]# vim /etc/ssh/sshd_config PermitRootLogin no3、密码认证⽅式改为秘钥认证[root@backup ~]# vim /etc/ssh/sshd_config PasswordAuthentication no4、重要服务不适⽤公⽹IP地址[root@web2 ~]# vim /etc/ssh/sshd_config UseDNS no[root@web2 ~]# vim /etc/ssh/sshd_config GSSAPIAuthentication no

ssh远程管理服务器

对内网所有的机器进行免密

# 创建密钥
[root@m01 ~]# ssh-keygen -t rsa# 免密登录
[root@m01 ~]# for i in 7 8 31 41 ;do ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.$i; done

跳板机脚本

[root@m01 ~]# cat jump-server.sh 
#!/bin/bash
###########################################
#            欢迎登录
#       Linux 12期 -- 高级项目:跳板机
#       Date: 2021.04.23
#       Anther: 杨哥
############################################ 欢迎界面echo -e "\033[32m ########################################### \033[0m"
echo -e "\033[35m #           欢迎登录  \033[0m"
echo -e "\033[36m #       Linux 12期 -- 高级项目:跳板机 \033[0m"
echo -e "\033[34m #       Date: 2021.04.23 \033[0m"
echo -e "\033[34m #       Anther:杨哥 \033[0m"
echo -e "\033[32m ########################################### \033[0m"while true;
doecho -e "\033[34m \
1> web1   172.16.1.7 \n \
2> web2   172.16.1.8 \n \
3> nfs   172.16.1.31 \n \
4> backup   172.16.1.41 \n \
q> exit 退出登录 \n \
\033[0m"read -p "请输入需要链接的主机:"  numecho $numcase $num in1)ssh root@172.16.1.7;;2)ssh root@172.16.1.8;;3)ssh root@172.16.1.31;;4)ssh root@172.16.1.41;;q)exit;;;yeg)read -p "请您输入跳板机密码:"  passwordif [ "$password" == "123" ];then/bin/bashelseecho -e "\033[31m 请重新输入密码!!! \033[0m"fi;;*)echo -e "\033[31m 请重新输入密码!!! \033[0m";;esacdone[root@m01 ~]# chmod +x jumpserver.sh 
[root@m01 ~]# vim /etc/ssh/sshd_config 
[root@m01 ~]# mv jumpserver.sh /etc/profile.d/
#验证脚本
[root@m01 profile.d]# /etc/profile.d/jumpserver.sh

跳板机退不出解决办法

1.ctrl+c  出现bash-42# 代表没有家目录  
2.cp -a /etc/skel/.bash* .   把家目录模板拷贝到家目录
3.ctrl+c  出现[root@m01 ~]############################################ #           欢迎登录  #       Linux 12期 -- 高级项目:跳板机 #       Date: 2021.04.23 #       Anther:杨哥 ########################################### 1> web1   172.16.1.7 2> web2   172.16.1.8 3> nfs   172.16.1.31 4> backup   172.16.1.41 q> exit 退出登录 
请输入需要链接的主机:^C-bash-4.2# ^C
-bash-4.2# ^C
-bash-4.2# cp -a /etc/skel/.bash* .
-bash-4.2# bash
bash: [root@m01: command not found########################################### #           欢迎登录  #       Linux 12期 -- 高级项目:跳板机 #       Date: 2021.04.23 #       Anther:杨哥 ########################################### 1> web1   172.16.1.7 2> web2   172.16.1.8 3> nfs   172.16.1.31 4> backup   172.16.1.41 q> exit 退出登录 
请输入需要链接的主机:^C[root@m01 ~]# ^C
[root@m01 ~]# ^C
[root@m01 ~]# ^C

这篇关于SSH远程管理服务简介 端口号查询 SSH相关命令 秘钥 SSH安全优化 跳板机脚本及跳板机退出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/yangenguang/article/details/116083320
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/408635

相关文章

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-