ssh及sshd的使用

一、openssh-server=sshd

功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell

二、客户端连接方式

ssh远程主机用户@远程主机ip

[root@desktop0 ~]# ssh root@172.25.0.11

The authenticity of host '172.25.0.11 (172.25.0.11)' can't beestablished.

ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.

Are you sure you want to continue connecting (yes/no)? yes   ##连接陌生主机时需要建立认证关系

Warning: Permanently added '172.25.0.11' (ECDSA) to the list of knownhosts.

root@172.25.0.11's password:                ##远程用户密码

Last login: Mon Oct  3 03:13:472016

[root@server0 ~]#                   ##登陆成功


ssh远程主机用户@远程主机ip -X              ##调用远程主机图形工具


ssh    远程主机用户@远程主机ip     command     ##直接在远程主机运行某条命令

注:sshsshd是客户端(Client)与服务端(Serve)的关系,这种关系是相对的,也是连接与被连接的关系

三、sshkey加密

1.生成公钥私钥

[root@server0 ~]#ssh-keygen       ##生成公钥私钥工具

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter]     ##
加密字符保存文件(建议用默认)

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):         [enter]     ##密钥密码,必须>4个字符

Enter same passphrase again:                [enter]     ##确认密码

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:                     ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 root@server0.example.com

The key's randomart image is:
+--[ RSA 2048]----+
|o                |
|E.               |
|..               |
|.  . o           |
|.o. * . S        |
|oo.o o   .       |
|+ =. .  .        |
|o. oo.+..        |
|    ..o*.        |
+-----------------+

[root@server0 ~]#ls /root/.ssh/

id_rsa  id_rsa.pub

id_rsa      ##私钥,就是钥匙

id_rsa.pub  ##公钥,就是锁

2.添加key认证方式

[root@server0 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub  root@172.25.0.11

ssh-copy-id     ##添加key认证方式的工具

-i          ##指定加密key文件

/root/.ssh/id_rsa.pub   ##加密key

root            ##加密用户为root

172.25.0.11     ##被加密主机ip

3.分发钥匙给client主机

[root@server0 ~]# scp /root/.ssh/id_rsa root@172.25.0.10:/root/.ssh/

4.测试

[root@desktop0 ~]# ssh root@172.25.0.11     ##通过id_rsa直接连接不需要输入用户密码

Last login: Mon Oct  3 03:58:10 2016 from172.25.0.250

[root@server0 ~]# 

四、提升openssh的安全级别

1.openssh-server配置文件

vim  /etc/ssh/sshd_config


78 PasswordAuthentication yes|no        ##是否开启用户密码认证,yes为支持no为关闭

48 PermitRootLogin yes|no           ##是否允许超级用户登陆



# 上图为permitRootLogin yes时所产生的效果


# 上图为permitRootLogin no时所产生的效果

49 AllowUsers student westos            ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell


50 DenyUsers westos             ##用户黑名单

2.控制ssh客户端访问

vim /etc/hosts.deny

sshd:ALL        ##拒绝所有人链接sshd服务

vim /etc/hosts.allow

sshd:172.25.254.250   ##允许250主机链接sshd

sshd:172.25.254.250 172.25.254.180    ##允许250180链接

sshd:ALL EXCEPT 172.25.254.200      ##只不允许200链接sshd


3.ssh登陆提示修改该

vim /etc/motd       ##显示登陆后字符

hello world     ##在登陆后就会显示这个字符



















 

<think> 我们正在讨论SSHSSHD的区别。根据引用的内容,我们可以总结如下: 引用[1]提到: - `/etc/ssh/sshd_config` 是sshd的配置文件 - `/etc/ssh/ssh_host_*` 是sshd在启动时生成的服务器端的公钥和私钥文件 - 当我们远程登录时,客户端的`known_hosts`文件会写入服务器的host key 引用[2]提到: - sshsshd是客户端(Desktop)与服务端(Serve)的关系,这种关系是相对的,也是连接与被连接的关系 因此,我们可以明确: - SSH是客户端程序,用于连接到远程服务器。 - SSHD是服务器端的守护进程,监听客户端的连接请求。 下面我将详细阐述两者的区别: ### SSHSSHD的区别 1. **角色定位**: - **SSH (Secure Shell)**: 是一个客户端应用程序,用于安全地连接到远程服务器。当用户执行`ssh user@host`命令时,就是在使用SSH客户端。 - **SSHD (Secure Shell Daemon)**: 是一个服务器端守护进程,运行在远程服务器上,监听特定的端口(默认为22),等待客户端的连接请求。 2. **功能作用**: - **SSH客户端**:负责初始化连接、认证用户(使用密码或密钥)、建立加密通道,并提供一个安全的远程会话(如命令行或文件传输)。 - **SSHD服务器**:负责接收连接请求、验证客户端身份、管理加密密钥、处理会话请求(如启动shell或执行命令)。 3. **配置文件**: - **SSH客户端**:通常使用`~/.ssh/config`(用户级别)和`/etc/ssh/ssh_config`(系统级别)进行配置。 - **SSHD服务器**:使用`/etc/ssh/sshd_config`作为主配置文件,用于设置端口、允许的用户、认证方式等[^1]。 4. **密钥管理**: - **SSH客户端**:存储用户的私钥(通常位于`~/.ssh/id_rsa`等)和已知主机公钥(`~/.ssh/known_hosts`)。 - **SSHD服务器**:存储服务器的主机密钥(位于`/etc/ssh/ssh_host_*`),用于向客户端证明服务器的身份[^1]。 5. **运行方式**: - SSH是一个命令行工具,由用户按需启动。 - SSHD是一个后台守护进程,持续运行以等待连接。 ### 工作流程示意图 ```mermaid sequenceDiagram participant Client as SSH客户端 participant Server as SSHD服务器 Client->>Server: 发起连接请求(TCP 22端口) Server->>Client: 发送服务器公钥 Client->>Server: 使用公钥加密会话密钥 Server->>Client: 认证请求(密码/密钥) Client->>Server: 发送认证信息 Server-->>Client: 认证成功,建立加密会话 ``` ### 常见误解澄清 - **SSHSSHD不是相对的软件包**:它们是同一协议(SSH协议)的两个组成部分,分别实现客户端和服务器端功能。 - **一台机器可以同时运行SSHSSHD**:例如,你的个人电脑可以作为SSH客户端连接远程服务器,同时也可以运行SSHD服务以便他人连接你的电脑(需谨慎配置安全)。 ### 安全建议 - 服务器端(SSHD)应禁用root登录和密码认证,改用密钥认证[^2]。 - 客户端(SSH)应启用密钥代理(ssh-agent)避免重复输入密码。 §§相关问题§§ 1. 如何配置SSHD禁用密码登录? 2. SSH客户端如何管理多个密钥? 3. 如何检测SSHD服务的异常登录尝试? </think> ### SSHSSHD的核心区别 SSH(Secure Shell)和SSHD(Secure Shell Daemon)是同一协议体系下的两个互补组件,主要区别体现在**角色定位**和**功能职责**上: #### 1. **角色本质区别** | 特性 | SSH (客户端) | SSHD (服务端) | |------------|---------------------------------------|----------------------------------------| | **定位** | 连接发起方 | 连接接收方 | | **运行方式**| 用户主动执行的命令 | 后台持续运行的守护进程 | | **配置文件**| `~/.ssh/config` 或 `/etc/ssh/ssh_config` | `/etc/ssh/sshd_config` [^1] | | **密钥存储**| `~/.ssh/id_rsa` (用户私钥) | `/etc/ssh/ssh_host_*` (主机密钥)[^1] | #### 2. **功能职责对比** **SSH客户端**: - 发起远程连接请求(如 `ssh user@host`) - 管理用户身份密钥 (`id_rsa`, `id_ed25519`) - 验证目标主机身份(通过 `known_hosts` 文件) - 支持端口转发、代理跳转等高级功能 **SSHD服务端**: - 监听网络端口(默认TCP 22) - 验证客户端身份(密码/公钥认证) - 管理主机密钥 (`ssh_host_ecdsa_key`等)[^1] - 提供加密的远程Shell会话或命令执行 - 控制访问权限(如禁用root登录) #### 3. **工作流程示例 ```mermaid sequenceDiagram participant Client as SSH客户端 participant Server as SSHD服务端 Client->>Server: TCP连接请求(端口22) Server->>Client: 发送主机公钥 Client->>Client: 校验known_hosts[^1] Client->>Server: 加密会话密钥(使用主机公钥) Server->>Client: 认证请求(密码/密钥) Client->>Server: 提交认证凭证 Server-->>Client: 认证成功→建立加密隧道 ``` #### 4. **密钥管理差异** - **SSH客户端密钥**: - 位置:`~/.ssh/id_rsa` (用户级) - 作用:向服务器证明用户身份 - 管理命令:`ssh-keygen` - **SSHD主机密钥**: - 位置:`/etc/ssh/ssh_host_ecdsa_key` (系统级)[^1] - 作用:向客户端证明服务器身份 - 生成:首次启动sshd时自动创建 > ⚠️ 安全提示:主机密钥泄露会导致中间人攻击风险,客户端通过`known_hosts`文件验证密钥一致性[^1] #### 5. **典型应用场景** - **SSH客户端**: ```bash ssh -i ~/.ssh/kvm-key.pem admin@kvm-host1 # 使用密钥登录 ssh -J jump-host@gateway target-host # 网关跳转 ``` - **SSHD服务端**: ```bash systemctl restart sshd # 重启服务 vi /etc/ssh/sshd_config # 修改端口/禁用密码登录等[^2] ``` ### 常见误区澄清 **误区**:"SSHSSHD需要分开安装" **正解**:主流Linux发行版中,`openssh-server`包提供SSHD守护进程,`openssh-client`包提供SSH客户端工具,两者可独立安装。 **误区**:"客户端不需要密钥配置" **正解**:SSH客户端需管理用户密钥进行认证,同时通过`known_hosts`验证服务器身份,避免中间人攻击。 --- ### 相关问题 1. 如何配置SSHD禁用密码登录并强制使用密钥认证? 2. SSH客户端怎样管理多个主机的密钥自动匹配? 3. 如何安全地轮换SSHD服务器的主机密钥?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值