Linux - SSH服务 - SCP - 免密通道建立

这篇具有很好参考价值的文章主要介绍了Linux - SSH服务 - SCP - 免密通道建立。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

SSH是什么?

如何知道一个服务是否运行? 

1、看进程

2、看端口

sshd表示什么呢?

我们将修改ssh服务端口号为2244端口,并禁用root用户登录

1、修改端口号为2244

2、禁止root用户登录

3、完成后我们重启sshd服务

4、扩展添加欢迎横幅文件

5、测试是否通过2244端口才能连接ssh服务,是否不能通过root用户连接ssh服务:

当然我们可以使用ssh命令远程登录

如果ssh远程连接不上,如何排查?

scp命令的使用:

免密通道建立实验:

免密通道建立的好处:2台机器之间传输文件或者执行命令,不需要输入密码了

步骤:

1、在客户机上使用root用户登录

2、上传公钥到服务器

3、测试密钥登录,免密登录

在Xshell里也进行免密通道的配置:

我们如何对SSH访问加固,使安全性更加牢固呢?

1、修改端口

2、禁用root用户

3、升级openssh

4、创建堡垒机\跳板机

跳板机或堡垒机的作用是什么呢?

如何做的让内外的服务器只允许堡垒机/跳板机访问?    1.iptables    2.tcp wrappers

堡垒机推荐使用软件:jumpserver软件


SSH是什么?

OpenSSH is the premier connectivity tool for remote login with the SSH protocol. 
OpenSSH 是一个比较早的用于远程登录连接使用的工具,底层是使用ssh协议

SSH(Secure Shell)是一种网络协议,用于实现远程登录计算机、数据传输和远程执行命令等操作的安全加密方式。与传统的远程登录方式如Telnet不同,SSH使用加密技术对通信过程进行了保护,提高了网络通信的安全性。

具体来说,SSH协议有以下几个特点:

  1. 加密传输:SSH对数据进行了加密处理,在网络上传输时可以有效防止数据被非法监听或篡改,保证通信安全性。

  2. 验证身份:SSH使用公钥加密技术,可以验证远程服务器的身份,并且客户端可以使用用户名和密码等凭证进行认证,确保远程操作的合法性。

  3. 远程协作:SSH实现了在远程终端上执行本地命令和向远程主机传输文件等功能,方便用户进行远程操作和协作开发。

通过SSH协议,用户可以通过终端、命令行等方式远程登录到其他计算机,进行命令行操作、管理和维护等任务。同时,SSH也提供了SCP、SFTP等文件传输协议,可以方便地在本地计算机和远程服务器之间传输文件。

需要注意的是,SSH协议是一种开放标准,包含在许多操作系统中,并可使用各种SSH客户端和服务器进行实现和使用。由于SSH协议的安全性高,因此它成为了Linux系统远程登录的标准方式,并广泛用于云计算、网络管理、软件开发等领域。

telnet服务: 远程控制的服务: 在网络上传输的数据是明文的,telnet这个远程控制服务很少使用了

查看ssh的版本

[root@localhost lianxi]# rpm -q openssh
openssh-7.4p1-21.el7.x86_64
[root@localhost lianxi]# 
默认linux系统是安装,centos系统默认安装
Ubuntu需要去指定安装

openssh安装包的作用:

[root@localhost lianxi]# rpm -qa|grep openssh
openssh-clients-7.4p1-21.el7.x86_64   --》提供工具的
openssh-7.4p1-21.el7.x86_64          --》提供工具的
openssh-server-7.4p1-21.el7.x86_64   --》提供ssh 服务的
[root@localhost lianxi]#  

如何知道一个服务是否运行? 

1、看进程

ssh scp,linux,运维,服务器

2、看端口

ssh scp,linux,运维,服务器

sshd表示什么呢?

他表示的是ssh服务的守护进程(sshd)

d表示:daemon 守护进程: 一直在内存里运行的进程(父进程)

[root@localhost lianxi]# pstree -p|grep sshd       #sshd的进程结构
           |-sshd(1179)-+-sshd(12759)---bash(12766)
           |            `-sshd(15353)---bash(15360)-+-grep(18956)
[root@localhost lianxi]# 

下图为sshd的连接示意图: 

ssh scp,linux,运维,服务器

配置文件目录:/etc/ssh
配置文件的作用就是给应用程序传递参数
sshd_config --》服务器端的配置文件  --》一般修改的是它
ssh_config --》客户端命令的配置文件
进程名字: sshd  -->sshd daemon
默认占用的端口号是:22

sshd_config  --》sshd进程的配置文件
#Port 22  告诉sshd进程占用22号端口

下面我们完成一个实验:

我们将修改ssh服务端口号为2244端口,并禁用root用户登录

(前提是我们关闭selinux服务,这个服务会加强linux的安全性,当我们去修改sshd服务的端口号的时候,会被拒绝,并且我们关闭了防火墙服务)

[root@localhost ssh]# getenforce  查看selinux的状态
Enforcing  强制执行的
[root@localhost ssh]# setenforce 0  临时关闭selinux   1   开启selinux 
[root@localhost ssh]# getenforce 
Permissive  宽容模式
[root@localhost ssh]# 

关闭防火墙,因为防火墙开启不允许3001端口随便进入的
[root@localhost lianxi]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@localhost lianxi]# 

1、修改端口号为2244

ssh scp,linux,运维,服务器

2、禁止root用户登录

ssh scp,linux,运维,服务器

3、完成后我们重启sshd服务

[root@localhost ssh]# service sshd restart 重启sshd服务
Redirecting to /bin/systemctl restart sshd.service
[root@localhost ssh]# 

4、扩展添加欢迎横幅文件

ssh scp,linux,运维,服务器

其中的welcome.txt文件内保存的就是祝贺词,我们可以随意添加。

[root@fengdeyong ssh]# cat /etc/ssh/welcome.txt 
welcome to sanchuang ssh server
[root@fengdeyong ssh]# 

5、测试是否通过2244端口才能连接ssh服务,是否不能通过root用户连接ssh服务:

[root@fengdeyong ssh]# useradd  zhenyani   创建连接用户
[root@fengdeyong ssh]# echo 123456|passwd zhenyani --stdin
更改用户 zhenyani 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@fengdeyong ssh]#

我们通过Xshell来连接

ssh scp,linux,运维,服务器

当然我们可以使用ssh命令远程登录

ssh的命令的使用
1.只是登陆
[root@manager161 .ssh]# ssh root@192.168.0.180  --》推荐
[daijun@manager161 ~]$ ssh 192.168.0.180  不指定登陆用户,默认会使用当前的用户名远程连接
[daijun@manager161 ~]$ ssh -l root 192.168.0.180
root@192.168.0.180's password: 
Last login: Sat Jun 26 11:27:12 2021 from 192.168.0.163
[root@www ~]# exit  退出
登出
Connection to 192.168.0.180 closed.
[daijun@manager161 ~]$ 

-p :可以指定端口号


2.运行远程机器上的脚本或者命令
[root@manager161 .ssh]# ssh 192.168.0.180  mkdir  /luogg{1..10}
[root@manager161 .ssh]# ssh 192.168.0.180  sudo mkdir  /danyh{1..10}
[root@manager161 .ssh]# 
[root@manager161 .ssh]# ssh 192.168.0.180  sudo bash /lianxi/scan_lan_ip.sh

如果ssh远程连接不上,如何排查?

ssh服务远程连接不上

排错思路:

    1.网络是否通畅
        ping
    2.检查进程或者服务是否开启
        ps  aux|grep sshd
        service sshd status

    3.检查端口
        netstat -anplut
        查看sshd  listen状态是否存在

    4.看日志看错误提醒

    [root@sanchuang ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
[root@sanchuang ~]#journalctl -xe

scp命令的使用:

远程传输文件的命令

[root@nameserver named]# scp  sc.com.zone  192.168.0.180:/root     #前面的代表源地址,后面的代表目的地

scp命令的使用
    scp命令推送文件在linux服务器之间
    [root@manager161 lianxi9]# scp mkdir.sh root@192.168.0.180:/root
mkdir.sh                                                      100%   42    10.9KB/s   00:00    
[root@manager161 lianxi9]# 
[root@manager161 lianxi9]# scp root@192.168.0.180:/etc/passwd  .
passwd                                                        100% 1792   953.1KB/s   00:00    
[root@manager161 lianxi9]# ls
mkdir.sh  passwd
[root@manager161 lianxi9]#
[root@manager161 lianxi9]# scp -r root@192.168.0.180:/boot  .   复制文件需要接-r选项


[root@manager161 lianxi9]# cat mkdir.sh    是具体需要做什么工作的脚本
for i in {1..10}
do
    mkdir -p feng$i
done
[root@manager161 lianxi9]# cat ctrl_mysql.sh   实现传递脚本到服务器,然后执行传递过去脚本
for i in {1..100}
do
    scp  /lianxi9/mkdir.sh root@192.168.0.$i:/root
    ssh root@192.168.0.$i bash /root/mkdir.sh
done
[root@manager161 lianxi9]# 

复制文件夹的话需要添加   -r

免密通道建立实验:

免密通道建立的好处:2台机器之间传输文件或者执行命令,不需要输入密码了

提前准备两台linux服务器,安装号openssh服务

建议使用centos7的系统

对两台机器的IP地址进行配置(桥接、NAT)

桥接模式:

BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#IPADDR=172.20.10.3
IPADDR=192.168.2.149
PREFIX=24
#GATEWAY=172.20.10.1
GATEWAY=192.168.2.1
DNS1=114.114.114.114

NAT模式:

BOOTPROTO=dhcp
NAME=ens33
DEVICE=ens33
ONBOOT=yes

两台机器的IP地址分别为192.168.2.149(client) 和 192.168.2.17(server)

下面我们将对其进行免密通道的建立

ssh scp,linux,运维,服务器

两台机器默认是允许root用户登录,默认打开的端口是22号

单项信任关系

双向信任关系

步骤:

ssh scp,linux,运维,服务器

1、在客户机上使用root用户登录

[root@mysql ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):     #一直回车即可,注意不要设置密码
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:MFcRVA8s8JwDYszCsPzRrTiGQtiX35S9JsOoBx9ctNk root@mysql
The key's randomart image is:
+---[RSA 2048]----+
|  .o oo +o==o    |
|.o .o+o+ @...o   |
|..+ +.+ O E.  .  |
|.  + = @   o     |
|. . * * S o      |
| . . = . +       |
|    . o          |
|     .           |
|                 |
+----[SHA256]-----+
[root@mysql ssh]# cd ~/.ssh
[root@mysql .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@mysql .ssh]# ll
总用量 12
-rw------- 1 root root 1679 4月  14 19:54 id_rsa
-rw-r--r-- 1 root root  392 4月  14 19:54 id_rsa.pub
-rw-r--r-- 1 root root  175 4月  14 07:16 known_hosts
[root@mysql .ssh]# 

2、上传公钥到服务器

ssh-copy-id 命令会自动帮助我们将公钥上传到服务器上去

[root@mysql .ssh]# ssh-copy-id root@192.168.2.17
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.2.17 (192.168.2.17)' can't be established.
ECDSA key fingerprint is SHA256:0Q2Gbu5Qj6ads614hulwxfDqGB6XnsMvwLMpQxFXJtk.
ECDSA key fingerprint is MD5:9a:d4:88:61:e7:96:c6:e7:94:11:2d:3f:47:c2:1f:c4.
Are you sure you want to continue connecting (yes/no)? yes
/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@192.168.2.17's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.2.17'"
and check to make sure that only the key(s) you wanted were added.

[root@mysql .ssh]# 

 我们能在服务器上看到authorized_keys文件(存放公钥的文件)

ssh scp,linux,运维,服务器

3、测试密钥登录,免密登录

ssh scp,linux,运维,服务器

在服务器端重复如上操作,即可形成双向信任关系

ssh scp,linux,运维,服务器

ansible软件运用到的就是ssh服务

在Xshell里也进行免密通道的配置:

1、我们先点开Xshell里的工具中的新建用户密钥生成向导

ssh scp,linux,运维,服务器

然后一直点击下一步,记住不需要设置密码哦

ssh scp,linux,运维,服务器

最后将生成的公钥传输到你的桌面上,方便传输到你的Linux机器里,我这里时使用Xftp传输到Linux上的,当然我们也可以使用rz命令传输,你必须下载lrzsz工具包,rz命令只能上传文件,如果需要从远程主机下载文件,应该使用sz命令

ssh scp,linux,运维,服务器

将传输好的文件重定向到authorized_keys文件中去(注:重定向会导致你输入的密钥没有分段,因此需要注意文件是否出现没有分段的现象)

[root@mysql .ssh]# cat id_rsa_2048_mysql_主.pub >> .ssh/authorized_keys 

ssh scp,linux,运维,服务器

完成这一步后,我们回到Xshell上,进行免密连接操作。

我们配置用户身份验证如我下图所示。

 ssh scp,linux,运维,服务器

最后配置IP地址和端口号即可

ssh scp,linux,运维,服务器

连接成功!

我们如何对SSH访问加固,使安全性更加牢固呢?

1、修改端口

2、禁用root用户

为什么ssh的时候不能使用root?登录进去了可以使用root?

ssh scp,linux,运维,服务器

3、升级openssh

[root@sanchuang ssh]# yum update openssh openssh-server

参考网站:pub-OpenBSD-OpenSSH-portable安装包下载_开源镜像站-阿里云

4、创建堡垒机\跳板机

ssh scp,linux,运维,服务器

跳板机或堡垒机的作用是什么呢?

跳板机是一种安全的远程访问方式,用于通过中间服务器(即跳板机)来访问远程网络资源。它的作用主要有以下几个方面:

  1. 增强安全性:使用跳板机可以增强网络安全性。在实际应用中,跳板机通常只允许特定的用户进行登录,并采用更加严格的身份验证、访问控制等措施,从而有效地防止未经授权的用户访问远程资源。

  2. 简化管理:跳板机还可以简化远程资源的管理。由于跳板机只需要开放一个端口,就可以让多个用户进行远程访问,因此可以更加方便地统一管理和监控远程资源的使用情况。

  3. 节约成本:使用跳板机可以节约企业的运维成本。由于跳板机可以减少直接连接到远程设备的数量,因此可以减少设备的维护和管理成本。此外,使用跳板机可以集中监控远程访问日志,及时发现安全问题,减少安全事件发生的概率。

总之,跳板机是一种非常重要的安全管理工具,可以帮助企业加强网络安全,简化系统管理,并节约成本。在实际应用中,跳板机被广泛应用于运维、开发、测试等各个领域,成为了重要的远程管理方式之一。

如何做的让内外的服务器只允许堡垒机/跳板机访问?
    1.iptables
    2.tcp wrappers

SSH使用TCP Wrappers实现访问控制
主要配置文件
/etc/hosts.allow   --》白名单
/etc/hosts.deny   --》黑名单

TCP Wrappers的访问控制原则
首先检查 hosts.allow 文件,若找到相匹配的策略,则允许访问
否则继续检查 hosts.deny 文件,若找到相匹配的策略,则拒绝访问
如果两个文件中都没有相匹配的策略,则允许访问

[root@sanchuang ~]# cat /etc/hosts.deny 
sshd:all
[root@sanchuang ~]# cat /etc/hosts.allow 
sshd:192.168.2.*,114.11.11.1
[root@sanchuang ~]# 
[root@sanchuang ~]# tail   -f /var/log/secure
Nov  8 16:22:39 sanchuang sshd[3701]: refused connect from 192.168.2.198 (192.168.2.198)
Nov  8 16:22:40 sanchuang sshd[3702]: refused connect from 192.168.2.117 (192.168.2.117)
[root@ssh-server .ssh]# ssh -p 3001 root@192.168.2.197
ssh_exchange_identification: read: Connection reset by peer
[root@ssh-server .ssh]# 

不需要刷新服务,立马生效

堡垒机推荐使用软件:jumpserver软件

官网:JumpServer - 开源堡垒机 - 官网文章来源地址https://www.toymoban.com/news/detail-779905.html

到了这里,关于Linux - SSH服务 - SCP - 免密通道建立的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ssh、scp和sshpass使用

    1、ssh 2、scp 2.1 拉取文件 2.2 上传文件 3、sshpass 3.1 定义 sshpass 的定义: ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。 3.2 安装 在当前电脑安装

    2024年02月15日
    浏览(8)
  • Windows SSH 配置和SCP的使用

    Windows SSH 配置和SCP的使用

    要在 Windows 10/11 上启用 SSH 服务器,请按照以下步骤操作: 按“Windows 键 +I”打开“设置”菜单,然后选择“应用程序”。 在左侧菜单栏中选择“应用和功能”。 从列表中选择“可选功能”。 点击“添加功能”按钮。 滚动并查找“OpenSSH Server”,然后单击它。 单击“安装”

    2024年02月09日
    浏览(11)
  • 【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

    【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

    目录 一、SSH基础 1、什么是ssh服务器 2、对比一下ssh协议与telnet协议 3、常见的底层为ssh协议的软件: 4、拓展 二、SSH软件学习 1、ssh服务软件学习  2、sshd公钥传输的原理: 3、ssh命令学习: 4、学习解读sshd服务配置文件: 三、ssh服务的应用 1、使用密钥对免密码登录 第一步

    2024年02月04日
    浏览(10)
  • Windows下使用SSH密钥实现免密登陆Linux服务器

    Windows下使用SSH密钥实现免密登陆Linux服务器

    工具: win10、WinSCP 生成ssh密钥: 打开终端,使账号密码登录,输入命令 会提示密钥存放路径,一般存放在默认路径,直接回车即可,中间会提示输入密码,这里需要注意,如果设置密码,则每次登陆的时候需要输入此密码来登陆,如果不输入密码的话可以直接使用密钥登陆

    2023年04月14日
    浏览(8)
  • Linux的SSH远程管理和服务器之间的免密连接

    Linux的SSH远程管理和服务器之间的免密连接

    目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 ssh协议是基于C/S机构的安全通道协议,通信数据进行加密处理,用于远程管理。 ssh的服务名称为sshd。 默认端口号:tcp的22端口 使用公钥传输 第一步:客户

    2024年01月19日
    浏览(13)
  • 如何使用ssh密钥的方式实现无密码scp传输文件

    在介绍如何使用SSH密钥的方式实现无密码SCP传输文件之前,我们先来了解一下什么是SSH公钥/私钥。 SSH公钥和私钥是一对密钥,用于加密您的登录信息和授权您的访问。公钥存储在服务器上,私钥存储在您的本地电脑上。当您通过SSH协议连接到服务器时,您的本地电脑会使用

    2024年02月06日
    浏览(12)
  • Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

    Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

    工具: win10、WinSCP 打开终端,使账号密码登录,输入命令 Downloading WinSCP-6.1.1-Setup.exe :: WinSCP 打开powershell  ssh-keygen -t rsa 注意路径 点击高级 工具有个向服务器推送公钥 powershell ssh root@192.xxxx        

    2024年02月14日
    浏览(18)
  • MobaXterm的下载及简单使用(建立 SSH 连接到 Linux 服务器)

    MobaXterm的下载及简单使用(建立 SSH 连接到 Linux 服务器)

    目录 一、MobaXterm 的下载 二、MobaXterm 的简单使用(建立 SSH 连接到 Linux 服务器) 三、会遇到的问题 问题1 问题2 官方下载地址:MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download 1.进入首页后,有家庭版(Home Edition)和专用版(Professional Edition)两个版本,我们选择为免费的家

    2024年02月09日
    浏览(16)
  • scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“

    scp或者ssh报错“no matching host key type found. Their offer: ssh-rsa,ssh-dss“ 原因:OpenSSH 7.0以后的版本不再支持ssh-dss (DSA)算法,查看ssh版本: 解决办法: 在每次指令后加上-oHostKeyAlgorithms=+ssh-dss或者-oHostKeyAlgorithms=+ssh-dsa: (推荐)在~/.ssh目录下修改config文件。( 如果是root用户并且没

    2024年02月12日
    浏览(10)
  • 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

    简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

    本文基于Linux上CentOS 7版本配合Xshell 7进行演示 目录 一.SSH简介 1.介绍 2.工作流程 二.具体配置免密步骤 1.配置前准备工作 2.正式配置过程 三.在服务器端配置SSH远程黑白名单 1.配置文件/etc/ssh/sshd_config部分参数解析 2.配置远程登录黑白名单 SSH用于计算机之间的加密登录,是一类

    2024年02月22日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包