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下安全访问远程服务器的更多相关文章

  1. [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器

    本文转自:http://blog.csdn.net/nnaabbcc/article/details/7967761 存储过程调用不同数据库的数据 在存储过程调用不同数据库的数据该如何做,比如在存储过 ...

  2. 使用nodejs和Java访问远程服务器的服务

    既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...

  3. #在windows上使用ngix重定向目录访问远程服务器文件详细实例

    为了在开发环境保持于生产环境相同的访问远程服务器文件资源的目录配置,需要在开发环境(windows)在远程文件服务器使用nignx重定向文件目录,因为网上的资料大都是copy的,解释比较笼统,也没有具 ...

  4. CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解

    CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...

  5. 解决Centos7 下 root账号 远程连接FTP,vsftpd 提示 530 Login incorrect 问题

    原文:解决Centos7 下 root账号 远程连接FTP,vsftpd 提示 530 Login incorrect 问题 三步走: 1.vim /etc/vsftpd/user_list 注释掉 ...

  6. Mac下ssh连接远程服务器时自动断开问题

    在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...

  7. 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 ...

  8. mac下ssh到远程服务器时中文乱码

    前言:mac本地的语言环境为英文,远程是支持中文的, 问题: 一开始是在iterm2下登录远程服务器更新数据库时发现中文注释不能正常显示,以为是iterms2下设置有问题,使用系统自带的termina ...

  9. LINUX的SSH下FTP到远程服务器Entering Passive Mode失败解决

    LINUX 系统FTP连接远程服务器经常出现在传输文件或者发出 ls命令时候出现 "Entering Passive Mode "然后就再也无法运作了.该工作主要是因为LINUX的 ...

随机推荐

  1. linux服务管理 服务启动和自启动

    服务启动和自启动 '服务启动' 就是在当前系统中让服务运行,并提供功能 '服务自启动' 自启动是指服务在系统开机或重启动之后,随着启动系统的启动而自动启动服务 服务自启动 [root@ssgao198 ...

  2. day37-多进程多线程二-锁

    Lock组件 当我们用多进程来读写文件的时候,如果一个进程是写文件,一个进程是读文件,如果两个文件同时进行,肯定是不行的,必须是文件写结束以后,才可以进行读操作.或者是多个进程在共享一些资源的时候,同 ...

  3. python全栈开发笔记---------数据类型---字典方法

    def clear(self) 清空字典里所有元素 # info = { # "k1":18, # "k2":True, # "k3":[ ...

  4. 同时使用n和nvm踩到的坑

    平时在公司的时候,一直只使用一个node版本.这两天想多了解下node的新版本,使用tj大神的 n 包管理工具来安装node包. 安装过程中一直难以容忍过慢的包下载速度,于是根据日志的描述直接把包下载 ...

  5. eclipse工具类及插件(svn的安装)

    (摘抄原文)https://blog.csdn.net/nzzl54/article/details/80768838

  6. centos打开matlab的正确姿势

    进入usr/local/MATLAB/R2015b/bin ./matlab

  7. xslfo和fop使用中的一些问题

    最近项目中使用fop和xslfo打印pdf,遇到一些问题记录下来: 1.表格跨行.跨列: 使用number-rows-spanned和number-columns-spanned属性 比如:<f ...

  8. java学习笔记41(数据库连接池 C3p0连接池)

    在之前的学习中,我们发现,我们需要频繁的创建连接对象,用完之后还需要在关闭资源,因为这些连接对象都是占资源的,但是又不得不创建,比较繁琐,为了解决这种情况,Java出现了数据库连接池: 数据库连接池的 ...

  9. python+flask开发小白第二天

    使用VSCode编译python web页面 1.先从最基础的说起吧,关于VSCode的使用: 运行python程序与运行java,c,c++程序一样,需要新建一个文件,第一个文件建议不要新建在本地的 ...

  10. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee

    从tomcat官网上下载了apache-tomcat-5.5.36.zip,在window xp系统里面解压以后,直接放在了linux服务器上. 进入tomcat/bin目录,执行启动的时候出现如下错 ...