关于ssh服务

SSH介绍

ssh: secure shell, protocol, 22/tcp, 安全的远程登录

具体的软件实现
OpenSSH: ssh 协议的开源实现,CentOS 默认安装
dropbear :另一个开源实现

SSH 协议版本

v1: 基于CRC-32 做MAC ,不安全;man-in-middle
v2:双方主机协议选择安全的MAC 方式

基于DH 算法做密钥交换,基于RSA 或DSA 实现身份认证

两种方式的用户登录认证:

1、基于password
2、基于key

Openssh

OpenSSH 介绍

相关包
openssh
openssh-clients
openssh-server

工具

基于C/S 结构
Client: ssh, scp, sftp ,slogin
Windows 客户端:

xshell,putty,securecrt, sshsecureshellclient
Server: sshd

ssh客户端

客户端组件

ssh

配置文件:

/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示

格式:ssh [user@]host [COMMAND]
     ssh [-l user] host [COMMAND]
            -p port :远程服务器监听的端口
            -b: 指定连接的源IP
            -v: 调试模式
            -C :压缩方式
            -X:  支持x11 转发
            -Y :支持信任x11 转发
                ForwardX11Trusted yes
            -t: 强制伪tty 分配
                ssh -t remoteserver1 ssh remoteserver2

允许实现对远程系统经验证地加密安全访问

当用户远程连接ssh 服务器时,会复制ssh 服务器/etc/ssh/ssh_host*key.pub (CentOS7
默认是ssh_host_ecdsa_key.pub )文件中的公钥到客户机的~./ssh/know_hosts
中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接。

ssh服务登录验证

ssh 服务登录验证方式

用户/口令
基于密钥

基于用户和口令登录验证

1 客户端发起ssh 请求,服务器会把自己的公钥发送给用户
2 用户会根据服务器发来的公钥对密码进行加密
3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

Created with Raphaël 2.1.0基于用户名口令建立的过程客户端客户端服务端服务端1.客户端想服务端发起ssh请求2.服务端收到请求,发送公钥给客户端3.客户端输入用户名密码通过公钥加密,回传给服务端4.服务端通过私钥解密得到用户的密码和本地进行对比,验证成功,允许登陆,负否则再次验证
基于密钥的登录方式

1 首先在客户端生成一对密钥(ssh-keygen) )
2 并将客户端的公钥ssh-copy-id 拷贝到服务端
3 当客户端再次发送一个连接请求,包括ip 、用户名
4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP 和用户,就会随机生成一个字符串,
例如:acdf
5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
7 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

Created with Raphaël 2.1.0基于密钥建立的过程客户端公钥私钥客户端公钥私钥服务端S公钥authorized_keys服务端S公钥authorized_keys1.首先在C上生成对密钥 2.将公钥拷贝给S一份并重命名为nauthorized_keys3.C向S发送一个连接请求,信息包括IP、用户名4.S得到C的信息后会到nauthorized_keys中查找,如果有响应的IP和用户名,S会随机生成一个字符串;例如;qwer6.得到S发来的消息后,C会使用私钥进行解密,然后将解密后的字符串发送给S5.客户端输入用户名密码通过公钥加密,回传给服务端7.接收到解密后的字符串会跟先前生成的字符串进行对比,如果一致,就允许面密码登陆

基于key认证

原理
基于密钥的登录方式:

1 首先在客户端生成一对密钥(ssh-keygen);
2 并将客户端的公钥ssh-copy-id 拷贝到服务端;
3 当客户端再次发送一个连接请求,包括ip 、用户名;
4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP
和用户,就会随机生成一个字符串,例如:acdf;
5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端;
6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端;
7 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。

详细步骤:

基于密钥的认证:

(1) 在客户端生成密钥对

教程:

ssh-keygen -t rsa [-P ”] [-f “~/.ssh/id_rsa”]

(2) 把公钥文件传输至远程服务器对应用户的家目录

ssh-copy-id [-i [identity_file]] [user@]host

(3) 测试
(4) 在SecureCRT 或Xshell 实现基于key 验证

在SecureCRT 工具—> 创建公钥—> 生成Identity.pub 文件转化为openssh 兼容格式(适合SecureCRT ,Xshell 不需要转化格式),并复制到需登录主机上相应文件authorized_keys 中,注意权限 必须为 为600 ,在需登录的ssh 主机上执行:
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

(5) 重设私钥口令

ssh-keygen –p

(6) 验证代理(authentication agent )保密解密后的密钥

• 这样口令就只需要输入一次
• 在 在GNOME 中,代理被自动提供给root 用户
• 否则运行ssh-agent bash

(7) 钥匙通过命令添加给代理

ssh-add

我的过程

(1) 在客户端生成密钥对
    [root@C6R1 ~]#ssh-keygen -t rsa -P '' -f  .ssh/id_rsa
    Generating public/private rsa key pair.
    Your identification has been saved in .ssh/id_rsa.
    Your public key has been saved in .ssh/id_rsa.pub.
    The key fingerprint is:
    0e:f3:41:d6:79:b2:a6:35:98:26:23:c0:cc:ae:0c:e1 root@C6R1
    The key's randomart image is:
    +--[ RSA 2048]----+
    |                 |
    | +       . .     |
    |. =     o + .    |
    |.o .   o o +     |
    |.E. . = S =      |
    |o.   . O = .     |
    |..      +        |
    |                 |
    |                 |
    +-----------------+
    [root@C6R1 ~]#cd .ssh/
    [root@C6R1 .ssh]#ls
    id_rsa  id_rsa.pub  known_hosts
    #id_rsa 私钥文件   id_rsa.pub 公钥文件  known_hosts ssh连接的key
(2) 把公钥文件传输至远程服务器对应用户的家目录

[root@C6R1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@172.18.13.62

.ssh/id_rsa.pub 把公钥文件传给对方主机,
就算写的是私钥文件也只会传给对方私钥文件。
注:私钥文件一定一定一定要保护好。
一般都加口令:ssh-keygen -p
再输入你想设置的密码
等会登陆的时候会验证私钥口令
只需输入一次即可,并且如果批
量管理的话口令都是一样的。
下文会介绍。

(3) 测试

ssh 172.18.13.62 #ssh 对方的IP,并且不需要输入用户名、密码

(4) 在SecureCRT 或Xshell 实现基于key 验证

在SecureCRT 工具—> 创建公钥—> 生成Identity.pub 文件
转化为openssh 兼容格式(适合SecureCRT ,Xshell 不需要转化
格式),并复制到需登录主机上相应文件authorized_keys 中,
注意权限 必须为 为600 ,在需登录的ssh 主机上执行:
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

(5) 重设私钥口令 :

ssh-keygen –p

(6) 验证代理(authentication agent )保密解密后的密钥

• 这样口令就只需要输入一次
• 在 在GNOME 中,代理被自动提供给root 用户
• 否则运行ssh-agent bash

(7) 钥匙通过命令添加给代理

ssh-agent bash
#启动代理
ssh-add
#代理是只有启动了才有效,注销或者重启,代理会需要再次输入密码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值