Linux OpenSSL:基于密码和密钥的远程登录

简介:

SSH: Secure shell, prototol, 22/tcp,安全的远程登录

OpenSSH: ssh协议的开源实现

ssh协议版本

v1: 基于CRC-32做MAC,不安全: man-in-middle

v2: 双方主机协议选择安全的MAC方式, 基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;

两种方式的用户登录认证:基于Password & 基于key

OpenSSH:    C/S

Client: ssh, scp, sftp,

Server: sshd

备注:Windows clinet: xshell, putty, securecrt, sshsecureshellclient

客户端组件:sshd

ssh, 配置文件 :/etc/ssh/ssh_config

1
2
3
格式: ssh  [user@]host [COMMAND]
       ssh  [ –l user ] host [COMMAND]
       -p port: 远程服务器监听的端口;

服务器端组件:sshd

sshd, 配置文件: /etc/ssh/sshd_config

 

示例:模拟环境

CentOS 7, IP: 192.168.0.111

CentOS 6.7,IP:192.168.0.113

可以使用如下命令查看系统的版本信息(适用用RedHat, CentOS)

1
2
[root@jimjimlv ~] # cat /etc/redhat-release    
CentOS release 6.7 (Final)

不指定用户远程登录主机CentOS 6.7

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~] # cat /etc/redhat-release    
CentOS Linux release 7.1.1503 (Core)     
[root@localhost ~] # ssh 192.168.0.113     
The authenticity of host  '192.168.0.113 (192.168.0.113)'  can't be established.     
RSA key fingerprint is a8:16:d9:15:8a:01:e5:d3:fb:26:bd:94:13:3e:50:6e.     
Are you sure you want to  continue  connecting ( yes /no )?  yes    #第一次授权密钥确认  
Warning: Permanently added  '192.168.0.113'  (RSA) to the list of known hosts.     
root@192.168.0.113's password:        #输入root管理密码
Last login: Fri Feb 19 22:14:48 2016 from 192.168.0.109      #成功登录远程主机
[root@jimjimlv ~] # cat /etc/redhat-release     
CentOS release 6.7 (Final)

使用exit命令退出远程登录

1
2
3
[root@jimjimlv ~] # exit    
logout     
Connection to 192.168.0.113 closed.

指定用户centos6.7远程登录主机CentOS 6.7

1
2
3
4
[root@localhost ~] # ssh centos6.7@192.168.0.113    
centos6.7@192.168.0.113's password:     
[centos6.7@jimjimlv ~]$  cat  /etc/redhat-release     
CentOS release 6.7 (Final)

生产环境当中,从安全的角度出发,默认的主机访问端口都需要修改掉,以下将演示修改端口后的主机远程访问方法

步骤一、修改配置文件/etc/ssh/sshd_config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#       $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
# This is the sshd server system-wide configuration file.  See    
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with    
# OpenSSH is to specify options with their default value where     
# possible, but leave them commented.  Uncommented options override the     
# default value.
# If you want to change the port on a SELinux system, you have to tell    
# SELinux about this change.     
# semanage port -a -t ssh_port_t -p tcp 
#PORTNUMBER     
#     
Port 2223    
#AddressFamily any     
ListenAddress 0.0.0.0     
#ListenAddress ::

重启sshd服务

1
[root@localhost  ssh ] # systemctl restart sshd.service

关闭防火墙

1
2
3
CentOS 6  #service sshd restart
CentOS 7  #systemctl stop firewalld.service
Xsheel:\> ssh   2223  #IP地址后紧跟着新端口号

wKiom1bJa7-jhVlkAAB8xY23gW4871.png

1
2
3
Last login: Sat Feb 20 22:49:35 2016 from 192.168.0.109     
[root@localhost ~] # cat /etc/redhat-release     
CentOS Linux release 7.1.1503 (Core)

 基于key的ssh远程登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost . ssh ] # ssh-keygen -t rsa     #生成密钥命令
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:     
9d:fc:93:7d:9a:00:01:47:23:69:9e:08:0c:cf:ca:bd root@localhost.localdomain     
The key's randomart image is:     
+--[ RSA 2048]----+     
|  .o    oo+      |     
|   oo   o+ .     |     
|    o. + ..      |     
| . o  . oo o     |     
|  o .   S =      |     
|     .     o o   |     
|    E       = . .|     
|             o + |     
|              o  |     
+-----------------+     
[root@localhost . ssh ] # ls     #密钥存储的位置为/root/.ssh/
id_rsa  id_rsa.pub  known_hosts     
[root@localhost . ssh ] # ssh-copy-id -i /root/.ssh/id_rsa root@192.168.0.113 #复制密钥到远程主机    
/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.0.113's password:  #输入root登录密码
Number of key(s) added: 1
Now try logging into the machine, with:    "ssh 'root@192.168.0.113'"     and check to  make  sure that only the key(s) you wanted were added.
[root@localhost . ssh ] # ssh root@192.168.0.113    #访问登录远程主机时,无需提供账户与密码认证登录
Last login: Sat Feb 20 01:53:08 2016

直接运行远程主机的某个命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost . ssh ] # ssh root@192.168.0.113 'ifconfig'     
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F0:55:67            
           inet addr:192.168.0.113  Bcast:192.168.0.255  Mask:255.255.255.0               
           inet6 addr: fe80::20c:29ff:fef0:5567 /64  Scope:Link               
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1               
           RX packets:6116 errors:0 dropped:0 overruns:0 frame:0               
           TX packets:1449 errors:0 dropped:0 overruns:0 carrier:0               
           collisions:0 txqueuelen:1000               
           RX bytes:526598 (514.2 KiB)  TX bytes:181464 (177.2 KiB)
lo        Link encap:Local Loopback            
           inet addr:127.0.0.1  Mask:255.0.0.0               
           inet6 addr: ::1 /128  Scope:Host               
           UP LOOPBACK RUNNING  MTU:65536  Metric:1               
           RX packets:8 errors:0 dropped:0 overruns:0 frame:0               
           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0               
           collisions:0 txqueuelen:0               
           RX bytes:628 (628.0 b)  TX bytes:628 (628.0 b)
[root@localhost . ssh ] #









本文转自 Nico_Lv 51CTO博客,原文链接:http://blog.51cto.com/nearlv/1743797,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Linux 编译器 vr&ar
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
31 1
|
1月前
|
存储 安全 Shell
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
35 0
|
14天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
1月前
|
安全 网络协议 Shell
【Shell 命令集合 系统管理 】Linux 远程登录 rlogin命令 使用指南
【Shell 命令集合 系统管理 】Linux 远程登录 rlogin命令 使用指南
30 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 同步密码 pwconv命令 使用指南
【Shell 命令集合 系统设置 】Linux 同步密码 pwconv命令 使用指南
28 0
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 远程登录工具 telnet 命令 使用指南
【Shell 命令集合 网络通讯 】⭐Linux 远程登录工具 telnet 命令 使用指南
30 0
|
1月前
|
算法 安全 Linux
Linux 裁剪并交叉编译openssl库
Linux 裁剪并交叉编译openssl库
28 1
|
1月前
|
Linux Shell 网络安全
Linux远程登录及相关工具介绍
Linux远程登录及相关工具介绍。
16 2
|
1月前
|
存储 运维 网络协议
Linux SSHD服务安装与维护详解(一)——SSHD安装、启动与密钥认证实现
Linux SSHD服务安装与维护详解(一)——SSHD安装、启动与密钥认证实现
40 2
|
2月前
|
安全 网络协议 Linux