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实现身份认证

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

基于password

基于key

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。

ssh加密通讯

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

 ssh服务登录验证

ssh服务登录验证方式:

用户/口令

基于密钥

ssh服务登录验证

基于密钥的登录方式

1 首先在客户端生成一对密钥(ssh-keygen)

2 并将客户端的公钥ssh-copy-id 拷贝到服务端

3 当客户端再次发送一个连接请求,包括ip、用户名

4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP

和用户,就会随机生成一个字符串。

5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的

字符串发送给服务端

7 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,

就允许免密码登录

基于密钥的登录方式

Linux 两台主机之间建立信任(ssh免密登录-即基于Key验证)

背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系。

在整理之前,我先说下ssh免密码的要点 :

你想免密码登陆到哪个主机哪个用户, 就把你自己的公钥文件内容追加到远程主机对应用户下的authorized_keys文件中即可,对面如果没有,远程复制过去就会自动创建此authorized_keys文件,并将公钥信息存在里边。

第一种方法:

第一步:ssh-keygen  -t  rsa  -P "" -f /root/.ssh/id_rsa 先创建秘钥对。

[[email protected]]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
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:4mYhhq/jjhz8I1QWudKRODsR6R1FnxLFFeh1YJ1+YiM [email protected]
The key‘s randomart image is:
+---[RSA 2048]----+
| .+ =+o.o=+ . |
| = * ooo. + |
|. * =..o. o |
| = B .. E = . |
| * o o S o + |
|.. o o o |
|.o . + |
|.o+o o |
|.+=o. |
+----[SHA256]-----+

生成的公私钥对在/root/.ssh目录下:文件名分别为id_rsa.pub(公钥)id_rsa(私钥)

第二步:

1、ssh-copy-id -i /root/.ssh/id_rsa.pub   192.168.34.101    将客户端的IP公钥传送到服务器端(192.168.34.101) 其中-i是指定自己当前的路径文件

2、或者ssh-copy-id  192.168.34.101   (centos6/7默认会将本地的公钥文件直接复制过去,也不需要指定当前的路径和-i)

第三步:

就进行测试连接服务器端的IP地址,就不需要密码登陆:ssh 192.168.34.101

同理将对方的的公钥复制到本机上,对方连本机也不需要输入密码,只需要输入本机私钥的密码即可。

完成免密登录直接可以在对方机器做操作:

如: ssh 192.168.34.100 useradd wang  在对方机器上创建wang账号

重要:如果远程机器有本机的私钥文件,且本机已对私钥加密,本地想远程多个主机每次都需要输入私钥密码。

我们可以将其进行托管至代理服务即可,两条命令可以解决,但是退出代理之后,下次需要再连接时还需要输入私钥口令。

将私钥加密之后再连接需要输入私钥加密口令,比较麻烦:

ssh  192.168.34.100

输入托管代理命令之后,就不需要再输入私钥加密口令,具体操作如下:

ssh-agent bash

ssh-add

[[email protected] .ssh]# ssh-agent bash
[[email protected] .ssh]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[[email protected] .ssh]# ssh 192.168.34.100
Last login: Tue Oct 22 21:47:24 2019 from 192.168.34.200
[[email protected]~]#

注意:

  •   如果远程主机的端口非22端口,需要指定-p port选项。
  •   ssh-copy-id是由openssh-clients包提供,没有这个命令可以安装这个包。

第二种方法: 

1)每个客户端都生成公私钥文件:

ssh-keygen -t rsa -P ‘‘ -f /root/.ssh/id_rsa(注:有几个主机,就在每个主机上执行几次)

2)将所有远程机器的公钥都复制到当前自己的文件下authorized_keys:

机器一进行公钥复制:ssh-copy-id  -i /root/.ssh/id_rsa_pub  192.168.34.100(注:该ip为本地地址)

机器二进行公钥复制:ssh-copy-id  -i /root/.ssh/id_rsa_pub   192.168.34.100

最后本机将自己的公钥文件也放入到authorized_keys中

ssh-copy-id  192.168.34.100

3)然后将本地的IP地址复制到远程机器上,实现所有的机器都有对方的公钥,也可以进行登录不需要秘钥登录:

ssh-copy-id  -i /root/.ssh/authorized   机器一的IP地址

ssh-copy-id  -i /root/.ssh/authorized   机器二的IP地址

最终结果:本地机器与其他主机连接一起就会免密,远程主机与本地主机连接也会免密。

实现一个循环创建秘钥对并将公钥传送到对方的脚本:

cat iplist.txt

192.168.34.100

192.168.34.101

192.168.34.102

#!/bin/bash

user=lisi
password=zhangsan
ssh-keygen -t rsa -p ""  -f /root/.ssh/id_rsa

while read ip ;do

expect  <<EOF
set timeout 10
spawn  ssh-copy-id -i /root/.ssh/id_rsa.pub  [email protected]$ip
expect {
"yes/no"   {send  "yes\n";exp_continue }
"password"  { send  "$password\n" }
}
expect  eof
EOF
done  < iplist.txt

原文地址:https://www.cnblogs.com/struggle-1216/p/11722367.html

时间: 2024-07-30 15:58:41

SSH服务:的相关文章

安全与加密之gpg,ssh服务

安全与加密 本章目录 gpg的使用 ssh服务 dropbear aide 1. gpg的使用 GPG是加密和数字签名的免费工具,大多用于加密信息的传递.除了仅用密码加密外,GPG最大的不同是提供了"公钥/私钥"对.利用你的"公钥"别人加密信息不再需要告诉你密码,随时随地都能发送加密信息.而这种加密是单向的,只有你的"私钥"能解开加密.数字签名又是另一大使用方向.通过签名认证,别人能确保发布的消息来自你,而且没有经过修改. 使用gpg实现对称加密

ssh 服务端安全配置

更改ssh服务端配置文件 [[email protected] ~]# vi /etc/ssh/sshd_config Port 59118                 #ssh 连接默认端口为22 ,更改后提高安全级别 PermitRootLogin no         #禁止root用户远程登录 PermitEmptyPasswords no    #禁止空密码登录 UseDNS no                  #不使用DNS GSSAPIAuthentication no  

Linux启用ssh服务相关操作

检查linux系统是否已经安装了ssh服务,有openssh或其他xxxssh,表示有安装ssh服务 命令:rpm -qa | grep ssh 2.启动ssh服务 ssh 服务用命令表示为sshd,所以启动命令为:service sshd start 3.查看端口使用情况 查看所有tcp端口:netstat -tnlp 查看指定端口:netstat -tnlp | grep 22 4.在windows的dos窗口下测试ssh服务是否连接成功,命令:telnet ip地址 端口号

win10下Linux子系统开启ssh服务

原文地址:http://whosmall.com/?post=430 本文标签: 开启ssh Linux子系统 虽然win10自带的bash功能已经很丰富,操作也简便,不过习惯了用xshell, 还是选择用xshell来操作 直接用xshell连接127.0.0.1 端口22 提示连接失败.说明应该是ubuntu的sshd服务设置有问题: 解决方案如下: 安装ssh apt-get install openssh-server 备份sshd配置文件 sudo cp /etc/ssh/sshd_c

SSH服务介绍

本文是在m01机器上面操作的. 查看ssh服务是否启动: [[email protected] ~]# /etc/init.d/sshd statusopenssh-daemon (pid  1220) is running... ssh服务对应进程是什么? [[email protected] ~]# ps -ef|grep sshdroot       1220      1  0 19:13 ?        00:00:00 /usr/sbin/sshd   (ssh服务)root   

2016-11-05实战-定义ssh服务的日志

1.编辑/etc/rsyslog.conf 输入 local 0 .*     /var/log/sshd.log   #日志的保存路径 2.定义ssh服务的日志级别 编辑sshd服务的主配置文件:/etc/ssh/sshd_config 3.使配置生效 1)重启rsyslog服务(生效配置) systemctl restart rsyslog 2)重启sshd服务,重启后生成文件/var/log/sshd.log systemctl restart sshd 4.查看sshd.log

Ubuntu开启ssh服务(14.04)

更新Ubuntu源 打开"终端窗口",输入"sudo apt-get update",终端窗口在图形界面下可以使用搜索文件terminal. 安装ssh服务端 Ubuntu默认安装了ssh客户端,但没有服务端 打开"终端窗口",输入"sudo apt-get install openssh-server" 查看ssh服务是否启动 打开"终端窗口",输入"sudo ps -e|grep ssh&qu

在Virtual Box上安装linux系统,启动SSH服务

? 一.????在Virtual Box上创建虚拟机????1 二.????安装linux系统????6 三.????重新设置 root 的密码:????8 四.????启动ssh服务????8 五.????建立共享文件夹????9 ? ? 摘自以下网页内容: 如何在Virtual Box上安装linux系统 : http://jingyan.baidu.com/album/2009576197fd24cb0721b409.html?picindex=1 Linux终端得到root权限 :htt

[SSH服务]——一个SSH无密码登陆实验

实验拓扑图 实验描述 机房内有两台服务器: (1)B服务器10.0.10.158,充当Web服务器,有普通用户user_00 (2)C服务器10.0.10.191,充当Mysql服务器,有普通用户user_00 有服务器A 10.0.10.198,供管理员平常使用来管理机房内的机器.为方便起见,所以要求做到: (1)A服务器能SSH远程登录(以user_00的身份)到B和C,且实现无密码登陆: (2)远程登录后,user_00可以直接sudo到root而不需要密码. 在服务器B:10.0.10.

ubuntu 14.04 下 安装samba 及SSH 服务端的方法

之前说了 FTP服务器的搭建:http://www.cnblogs.com/bcsflilong/p/4200139.html 今天说一下samba 和ssh服务器的搭建. 先说samba 吧. 在ubuntu14.04 版本中安装有两中方式! 简单粗暴的apt-get 1 sudo apt-get install samba 或者在任意文件夹上点击右键,出现右键菜单,之后点击[本地网络共享],如图: 之后勾选 共享此目录,系统就会弹出提示你安装必须的软件包.建议采用这种方式安装! 安装完成之后