centos7下安全访问远程服务器
1. 添加普通账号
众所周知,linux下的root拥有最高权限,可以执行任何命令。在使用root身份操作时,有时的一个不注意就可能将非常重要的删除(最可怕的是 rm -rf /)。而linux不像windows有可以撤销的回收箱,。所以建议建立普通用户账号,在平时的时候以普通用户身份登录,只在需要root权限时才通过sudo 临时提高普通用户的权限或是通过su - 切换到root用户,执行完任务后立刻exit。
新建普通用户,用户名以example_user 为例
useradd example_user && passwd example_user
# 将对应的用户加入wheel组,wheel组用于sudo权限
usermod -aG wheel example_user
2. 创建ssh登录时进行身份验证的密钥对
假设有以下情景,有3台主机:
- node3 ip: 192.168.35.120
- node4 ip: 192.168.35.130
- node5 ip: 192.168.35.140
node3上的用户root 想通过私钥 有密码登录node4,无密码登录node5
# 配置密码登录 node4
# 产生4096位的rsa密钥对
[root@node3 .ssh]# ssh-keygen -b
Generating public/private rsa key pair.
# 指定存储路径
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/node4_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/node4_id_rsa.
Your public key has been saved in /root/.ssh/node4_id_rsa.pub. # 将公钥发给node4主机,追加在 root用户的~/.ssh/authorized_keys文件末尾
[root@node3 .ssh]# ssh-copy-id -i /root/.ssh/node4_id_rsa.pub root@node4
The authenticity of host 'node4 (192.168.35.130)' can't be established.
ECDSA key fingerprint is a7::be::f5:b5::1f:ce::ea:6d:df:e2:1a:.
Are you sure you want to continue connecting (yes/no)? yes
/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: key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node4's password: Number of key(s) added: Now try logging into the machine, with: "ssh 'root@node4'"
and check to make sure that only the key(s) you wanted were added. # 远程登录
[root@node3 .ssh]# ssh -i ~/.ssh/node4_id_rsa root@node4
Enter passphrase for key '/root/.ssh/node4_id_rsa':
Last login: Fri Sep :: from 192.168.35.1 # 配置无密码登录node5
[root@node3 .ssh]# ssh-keygen -b
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/node5_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/node5_id_rsa.
Your public key has been saved in /root/.ssh/node5_id_rsa.pub.
The key fingerprint is:
:ef::a2::f1:::af:bf:::a7:7d:ed:2b root@node3 [root@node3 .ssh]# ssh-copy-id -i ~/.ssh/node5_id_rsa.pub root@node5
The authenticity of host 'node5 (192.168.35.140)' can't be established.
ECDSA key fingerprint is a7::be::f5:b5::1f:ce::ea:6d:df:e2:1a:.
Are you sure you want to continue connecting (yes/no)? yes
/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: key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node5's password: Number of key(s) added: Now try logging into the machine, with: "ssh 'root@node5'"
and check to make sure that only the key(s) you wanted were added. [root@node3 .ssh]# ssh -i ~/.ssh/node5_id_rsa root@node5
Last login: Fri Sep :: from 192.168.35.1
除了ssh-copy-id,还可以通过下面的方法进行公钥的上传
Step1: 通过ssh远程登录
ssh 用户名@ip地址远程登录
Step 2: 通过文件上传工具如filezilla,或是直接通过命令rz(通过yum install lrzsz安装)上传公钥 xxx.pub
Step 3: 将公钥以追加的形式写入authorized_keys文件中(该文件可以记录多个公钥信息)
cat xxx.pub >> ~/.ssh/authorized_keys
Step4 : 文件权设置
# chmod ~/.ssh
# chdmo ~/.ssh/authorized_keys
注意,此时仍能通过密码进行登录
[root@node3 .ssh]# ssh root@node4
root@node4's password:
Last login: Fri Sep :: from node3
[root@node4 ~]#
3. 修改配置文件,禁止密码登录
修改配置文件 /etc/ssh/sshd_config
# 禁止使用root身份进行远程登录,建议使用普通用户身份登录[可根据实际情况]
PermitRootLogin no
# 取消密码验证登录
PasswordAuthentication no
然后重启服务即可
sudo service sshd restart
测试效果如下:
# 普通用户可以通过私钥登录
[alex@node3 ~]$ ssh alex@node4
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[alex@node3 ~]$ ssh -i ~/.ssh/node4_id_rsa alex@node4
Last login: Sat Sep ::
[alex@node4 ~]$ exit
logout
Connection to node4 closed. [alex@node3 ~]$ su -
Password:
Last login: Sat Sep :: CST on pts/
# root无法登录
[root@node3 ~]# ssh root@node4
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[root@node3 ~]# ssh -i ~/.ssh/node4_id_rsa root@node4
Enter passphrase for key '/root/.ssh/node4_id_rsa':
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
参考:
centos7下安全访问远程服务器的更多相关文章
- [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器
本文转自:http://blog.csdn.net/nnaabbcc/article/details/7967761 存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过 ...
- 使用nodejs和Java访问远程服务器的服务
既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...
- #在windows上使用ngix重定向目录访问远程服务器文件详细实例
为了在开发环境保持于生产环境相同的访问远程服务器文件资源的目录配置,需要在开发环境(windows)在远程文件服务器使用nignx重定向文件目录,因为网上的资料大都是copy的,解释比较笼统,也没有具 ...
- CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...
- 解决Centos7 下 root账号 远程连接FTP,vsftpd 提示 530 Login incorrect 问题
原文:解决Centos7 下 root账号 远程连接FTP,vsftpd 提示 530 Login incorrect 问题 三步走: 1.vim /etc/vsftpd/user_list 注释掉 ...
- Mac下ssh连接远程服务器时自动断开问题
在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...
- CentOS7下BIND配置主从服务器和缓存服务器
系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:bind-chroot-9.9.4-51.el7_4.1.x ...
- mac下ssh到远程服务器时中文乱码
前言:mac本地的语言环境为英文,远程是支持中文的, 问题: 一开始是在iterm2下登录远程服务器更新数据库时发现中文注释不能正常显示,以为是iterms2下设置有问题,使用系统自带的termina ...
- LINUX的SSH下FTP到远程服务器Entering Passive Mode失败解决
LINUX 系统FTP连接远程服务器经常出现在传输文件或者发出 ls命令时候出现 "Entering Passive Mode "然后就再也无法运作了.该工作主要是因为LINUX的 ...
随机推荐
- webpack常用插件配置记录
github仓库:https://github.com/llcMite/webpack.git 1)html-webpack-plugin (用于模板生成html,自动引入output文件) c ...
- c++ 生成dll文件并调用
2 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
- 使用Java API方式连接HDFS Client测试
IDEA中新建Maven工程,添加POM依赖, 在IDE的提示中, 点击 Import Changes 等待自动下载完成相关的依赖包. <?xml version="1.0" ...
- FCC JS基础算法题(13):Caesars Cipher(凯撒密码)
题目描述: 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码.移位密码也就是密码中的字母会按照指定的数量来做移位.一个常见的案例就是ROT13密码,字母会移位13个位置.由'A ...
- Java实现数据库与eclipse的连接
JavaBean:用于传递数据,拥有与数据相关的逻辑处理 JSP:从Model接收数据并生成HTML Servlet:接收HTTP请求并控制Model和View jdbc:用于驱动连接 一.[建立数据 ...
- 剑指Offer 57. 二叉树的下一个结点 (二叉树)
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题目地址 https://www.nowcoder.c ...
- vscode 插件推荐 - 献给所有前端工程师(更新与2018.8.1)
VScode现在已经越来越完善.性能远超Atom和webstorm,你有什么理由不用它?在这里,我会给你们推荐很多实用的插件,让你对 vscode 有更深刻的体会,渐渐地你就会知道它有多好用. 走马观 ...
- Xcode 运行时配置
有时候,我们的app在测试时需要连接到一个testing服务器,在打包为企业证书的app时又需要连接到另一个ad hoc 服务器,或者我们想企业证书打包的app和debug模式打包的app有不同的AP ...
- Gym - 101490F:Endless Turning (半平面交)
pro:给定R条街道,现在小孩在某条街上骑车车,最开始他沿着所在街道向东(1,4象限的方向)驶去,如果他遇到街道的交叉口,他会右转.问他转N次后在哪个街道.有特殊情况是他一只遇不到交叉口,会沿着街道一 ...
- Python全栈之路----函数----内置方法
Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod ...