Linux配置SSH远程登录管理
目录
一、SSH协议
1.SSH简介
2.SSH的优点
3.SSH远程控制软件及服务
二、SSH远程管理配置
1.配置OpenSSH服务端
2.使用SSH客户端软件
(1)SSH远程登录
(2)scp远程传输文件
3.SSH登录验证的两种验证方式
(1)密码验证
(2)密钥对验证
一、SSH协议
1.SSH简介
SSH 为 Secure Shell的缩写, 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
2.SSH的优点
- 数据加密
- 数据压缩(提高传输速率)
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”这种方式的攻击。
通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、PoP、甚至为PPP提供一个安全的"通道"
3.SSH远程控制软件及服务
SSH客户端:Putty、Xshell、CRT、MobaXterm
用于远程连接主机的软件,企业一般使用Putty这类开源软件。
SSH服务端: OpenSSH
OpenSSH是实现 SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。Centos 7系统默认已安装openssh相关软件包,并已将sshd 服务添加为开机自启动。
sshd服务
sshd服务默认使用的是TCP的22端口。
sshd服务的默认配置文件在/etc/ssh下,ssh_config是针对客户端的配置,sshd_config是针对服务端的配置。
二、SSH远程管理配置
1.配置OpenSSH服务端
服务端配置文件sshd_config常用字段及解释
字段 | 解释 |
---|---|
Port 22 |
监听端口(默认22) |
ListenAddress 0.0.0.0 | 监听ipv4地址网段(默认全网段) |
LoginGraceTime 2m | 登录验证超时时间 2分钟 |
PermitRootLogin no | 禁止root用户登录 |
MaxAuthTries 6 | 最大重试次数 6次 |
MaxSessions 10 | 最大支持会话数量 10个 |
PermitEmptyPasswords no | 禁止空密码用户登录 |
UseDNS no | 禁用DNS反向解析(提高服务器响应速度) |
AllowUsers 用户1 用户2... DenyUsers 用户1 用户2... |
允许或禁止某用户登录(多个用户用空格隔开) 注:这两条字段选其一,不能同时使用 |
上一条用户名后加上@12.0.0.1 | 与上一条实现允许或禁止用户只能在指定ip的主机上登录 |
2.使用SSH客户端软件
(1)SSH远程登录
[root@localhost1 ~]# ssh [-p 端口号] [用户名@]服务端ip // 远程登录指定服务端
-p 指定远程登录的端口,不写默认使用22端口
ip前加上"用户名@"指定登录的用户,不写默认使用当前用户
[root@localhost2 ~]# exit //使用exit命令退出登录
//使用root用户登录192.168.116.20主机
[root@localhost1 ~]#ssh -p 22 root@192.168.116.20
The authenticity of host '192.168.116.20 (192.168.116.20)' can't be established.
ECDSA key fingerprint is SHA256:BhhxtVT0Hy+tIQ4bMqAvyKJUBldEolUbURl/42FYg4o.
ECDSA key fingerprint is MD5:a0:5b:4f:33:31:ef:38:01:31:3b:b4:14:ad:a1:23:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.116.20' (ECDSA) to the list of known hosts.
root@192.168.116.20's password:
Last login: Tue Aug 16 09:09:20 2022
'abrt-cli status' timed out//登录成功
[root@localhost2 ~]#//退出登录
[root@localhost2 ~]#exit
登出
Connection to 192.168.116.20 closed.//回到本机
[root@localhost1 ~]#
注:当用户第一次登录ssh服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。接收的密钥信息将保存到~/. ssh/know_hosts文件中。密码验证成功以后,即可登录目标服务器的命令行环境中。
//刚刚登录时收到的密钥
[root@localhost1 ~]#cat .ssh/known_hosts
192.168.116.20 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCBhY9r8mXXzHMu2IMqVnvgW99vU8Xnio3MpUrkYwbrzfzXG37IiWriziEwIMm5c8XlS+q/iIj8Cdm+drMB6REk=
(2)scp远程传输文件
上传文件(客户端传到服务端)
[root@localhost1 test]# scp [-P 端口号] 文件名 [用户名@]服务端ip:上传到的目录
-P 指定远程登录的端口,不写默认使用22端口
-r 目录 递归传输目录
ip前加上"用户名@"指定登录的用户,不写默认使用当前用户
//首先创建文件夹用于scp上传
[root@localhost1 /]#mkdir -p /data/test
[root@localhost1 /]#cd /data/test/
[root@localhost1 test]#touch 1.txt//使用root用户scp递归将/data目录上传到服务端的/root目录下
[root@localhost1 test]#scp -P 22 -r /data root@192.168.116.20:/root
root@192.168.116.20's password:
1.txt 100% 0 0.0KB/s 00:00 //进入服务机,发现家目录多了data目录
[root@localhost2 ~]#ls
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
data 公共 视频 文档 音乐//查看这个data目录,确认是scp上传过来的
[root@localhost2 ~]#cd data
[root@localhost2 data]#tree
.
└── test└── 1.txt1 directory, 1 file
下载文件(从服务端下载到客户端)
[root@localhost1 test]# scp [-P 端口号] [用户名@]服务端ip:文件路径 保存到本地的路径
-P 指定远程登录的端口,不写默认使用22端口
-r 目录 递归传输目录
ip前加上"用户名@"指定登录的用户,不写默认使用当前用户
//在服务端新建测试文件
[root@localhost2 ~]#touch test.txt
[root@localhost2 ~]#ls
anaconda-ks.cfg test.txt 模板 图片 下载 桌面
initial-setup-ks.cfg 公共 视频 文档 音乐//以root用户scp远程下载服务端的test.txt到/data目录下
[root@localhost1 ~]#scp -P 22 root@192.168.116.20:/root/test.txt /data
root@192.168.116.20's password:
test.txt 100% 0 0.0KB/s 00:00 //查看发现获取成功
[root@localhost1 ~]#ls /data
test.txt
3.SSH登录验证的两种验证方式
(1)密码验证
对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解
默认情况下,远程连接都是使用的密码验证,即需要输入登录用户的密码。
(2)密钥对验证
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。
公钥和私钥的关系:
- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
- 不能根据一个密钥来推算出另一个密钥(非对称密钥)。
- 公钥对外公开,私钥只有私钥的持有人才知道。
SSH密钥对验证过程:
配置使用密钥对验证登录
1.生成密钥对
[root@localhost1 ~]#ssh-keygen [-t 加密算法] //生成密钥对
-t 指定加密算法(rsa、dsa、ecdsa等)
//生成密钥对(使用dsa加密算法)
[root@localhost1 ~]#ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): --指定密钥对文件位置(默认当前用户家目录的.ssh/下)
Enter passphrase (empty for no passphrase): --是否给密钥对设置密码(为空则不指定)
Enter same passphrase again: --指定后需要重输密码校验
Your identification has been saved in /root/.ssh/id_dsa. --私钥位置
Your public key has been saved in /root/.ssh/id_dsa.pub. --公钥位置
The key fingerprint is:
SHA256:vjGR6YAff/Nah7t+m1Ou6C0YWcrvUZaZ0tRQ5tpGVdg root@localhost1
The key's randomart image is:
+---[DSA 1024]----+
| .+*|
| .=E|
| . +|
| . o .o B |
| . o S. +. O o|
| . * .= = ..|
| . * o++ .o |
| =.+o*o..|
| . .=O+=+ |
+----[SHA256]-----+[root@localhost1 ~]#ls .ssh/
id_dsa id_dsa.pub known_hosts
2.1将公钥发送给服务器(手动)
//查看公钥文件
[root@localhost1 ~]#cat .ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1//在服务端当前用户家目录下的.ssh下创建authorized_keys(用于存放公钥)
[root@localhost2 ~]cd .ssh
[root@localhost2 .ssh]#vim authorized_keys
将之前生成的公钥复制进这个文件
2.2将公钥发送给服务器(自动)
[root@localhost2 ~]# ssh-copy-id -i 公钥文件 用户@服务端ip
//使用命令自动传送公钥文件,会自动生成authorized_keys文件
[root@localhost1 ~]#cd .ssh
[root@localhost1 .ssh]#ssh-copy-id -i id_dsa.pub root@192.168.116.20//查看一下
[root@localhost2 ~]#cd .ssh
[root@localhost2 .ssh]#ls
authorized_keys known_hosts
[root@localhost2 .ssh]#cat authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1
3.重新使用ssh远程登录服务端,会提示使用密钥验证登录(如果为密钥设置了密码,还需要输入密钥的密码)
补充:免交互登录
- 公钥文件设置了密码
服务端导入公钥文件后,建立ssh代理(此方式只在当前连接有效)
[root@localhost1 ~]#ssh-agent bash
[root@localhost1 ~]#ssh-add
Enter passphrase for /root/.ssh/id_dsa:
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)
- 公钥文件未设置密码(密码为空)
这种情况可以在密钥验证后直接登录
Linux配置SSH远程登录管理相关推荐
- Linux开启ssh 远程登录
Linux开启ssh 远程登录 密码登录: 安装ssh apt-get install ssh 这个东西默认是没有装的 修改配置文件 vim /etc/ssh/sshd_config 重启配置服务 s ...
- Linux 修改ssh远程登录端口命令
Linux 修改ssh远程登录端口命令 使用默认22端口登录服务器执行以下命令 sudo vi /etc/ssh/sshd_config 找到 #Port 22这一行,把#号注释去掉同时在下面新增一行 ...
- 华为交换机ssh思科交换机_如何在思科交换机上配置SSH远程登录
1 1.本地PC连到交换机配置口 第一次配置交换机时,只能通过交换机的Console口进行本地配置,默认Console口登录到命令行界面时没有密码且拥有全部权限.要连接到交换机,你只需要在PC上装好需 ...
- Linux配置ssh远程连接服务
Linux配置ssh远程连接服务 直接上命令: sudo apt-get update sudo apt-get remove --purge openssh-client sudo apt inst ...
- CentOS-7 配置 SSH 远程登录
CentOS-7 配置 SSH 远程登录 CentOS 配置 SSH 远程登录 一.环境 二.配置网络 1.检查网络状态 2.下载 net-tools 工具 3.检查主机与虚拟机是否正常连通 三.SS ...
- linux服务器之间调用反应慢,Linux使用ssh远程登录服务器反应慢的解决办法
机房里其它机器使用ssh远程都正常,新来一个服务器每次使用ssh远程登录的时候,"root@***.***.***.***'s password:"这行输入密码的提示都来的特别慢, ...
- key位置 win10生成的ssh_华为路由器配置SSH远程登录,就这么简单
SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密. SSH远程登录华为路由器 SSH是在传统的Telnet协议之 ...
- linux服务器开启远程端口,Linux修改SSH远程登录端口
1.修改SSH远程登录端口为1211 # vi/etc/ssh/sshd_config Port 1211 #把'#Port 22'修改为'Port 1211': #AddressFamilyany ...
- Linux用户登录自动拷贝文件,linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录...
原文出处: http://blog.csdn.net/five3/article/details/8648484 最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令 ...
最新文章
- 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?
- [CF494D]Birthday
- libslog---高性能开源C/C++多线程安全日志库
- 23天的单车旅行,从广州到四川,篇首语
- 微软电脑适合什么人用_#微软surface pro使用心得# 大学生挑电脑参考/平板与电脑二合一到底买的是什么...
- html 图片行内剧中,HTML入门(转义字符、行内样式和块级元素、定位、锚点、跑马灯标签、图片标签、表格标签的讲解)...
- C语言和C+的区别是什么?8个点通俗易懂的告诉你
- 单链表输出最小值并逐个删除
- MySQL更改安装路径和Data位置
- python机器学习库sklearn——模型评估
- python,numpy中np.random.choice()的用法详解及其参考代码
- php设置路径别名,设置别名php = / bin / php56,但今天它已恢复为原始路径:/ bin / php...
- Latex 字体调整-斜体-下划线-加粗-罗马数字
- 神经网络机器翻译总结
- 服务器ghost备份后无法进入系统还原,一键Ghost备份还原解决方法
- 【数据结构】树与树的表示、二叉树存储结构及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树与哈夫曼编码、集合及其运算
- 湖北师范大学计信计科2018届期末实训EduCoder习题 (参考答案)
- 【uniapp】微信小程序国际化详细版
- 公司企业邮箱怎么登录?这些安全登录邮箱的方法你要知道
- Delphi XE E2064 Left side cannot be assigned to 错误解决方法
热门文章
- 从工地到办公室:一个土木工程师如何学成测试技能?
- 计算机三维设计基础知识,关于三维设计要掌握的方法和技巧有哪些
- Silverlight,WPF动画终极攻略之会飞的小鸟篇
- sql语句实现分页查询
- 使用集中式身份管理服务详解
- java 类名方法_Java学习——根据类名获取方法名,并调用方法
- 魅族android10内侧,魅族首批 Android 10 内测版今日起开始推送
- Windows11,银河麒麟:如何打开端口
- java毕业生设计校园摄影爱好者交流网站计算机源码+系统+mysql+调试部署+lw
- Windows Server 2012打开端口3306