SSH 连接远程终端实用教程

简介: SSH 可分为客户端和服务端,服务端是一个守护进程,一般是 sshd 进程,在后台运行并响应来自客户端的请求,提供了对远程请求的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接;客户端一般是 SSH 进程,另外还包含 scp、slogin、sftp 等其他进程。这篇文章主要讲如何 SSH 连接远程终端,以此记录一下整个配置过程。

作为后端开发者,难免要经常与服务器打交道,部署项目,查看日志,排查问题等等,除了开发工作,其余时间基本都在终端上,那么你是怎么连接上服务器的呢?直接粗暴地用账号密码?但是直接用账号密码连接服务器存在安全风险,因为服务器有多人拥有权限,在密码拷贝给各个成员过程中,非常容易暴露出去,所以通常我们是通过 SSH 来连接远程终端。


SSH 可分为客户端和服务端,服务端是一个守护进程,一般是 sshd 进程,在后台运行并响应来自客户端的请求,提供了对远程请求的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接;客户端一般是 SSH 进程,另外还包含 scp、slogin、sftp 等其他进程。


这篇文章主要讲如何 SSH 连接远程终端,以此记录一下整个配置过程。


客户端生成公钥密钥



用 git 命令 ssh-keygen -t rsa ,会在 ~/ 下生成一个 .ssh 的隐藏文件夹,里面包含 id_rsa 密钥和 id_rsa.pub 公钥,等下把公钥添加到服务器。


下载 SSH,配置 SSH,启动 sshd




$ yum install openssh-server -y


OpenSSH 的主配置文件:/etc/ssh/sshd_config


以下是一些常用设置:

# 设置SSH的端口号是22(默认端口号为22)
Port 22
# 使用ssh验证登陆
RSAAuthentication yes 
pubkeyAuthentication yes
# 公钥文件路径
AuthorizedKeysFile    .ssh/authorized_keys
# 禁止密码登陆
PasswordAuthentication no


开启 sshd:

$ systemctl start sshd.service #启动
$ systemctl stop sshd.service #停止
$ systemctl restart sshd.service #重启 


查看进程:

$ ps -ef | grep sshd



服务端创建用户,添加公钥



在 SSH 启动后,会在 ~/ 下创建一个 .ssh 隐藏文件夹,里面有一个 authorized_keys 文件,可以在这个文件添加需要连接的服务器的客户端的公钥,但是一般不会这么做,这会有安全隐患,因为在 root 目录下的公钥的客户端登陆到服务器后会直接取得 root 权限,所以我会创建一个用户,在用户所有在目录下添加 .ssh 目录,在 .ssh 目录下创建 authorized_keys 文件,最后把客户端公钥添加到 authorized_keys 文件中:


创建用户:


$ adduser chenghui.zhang


如果创建 .ssh 目录和 authorized_keys 文件的时候是用 root 创建的,那么需要将其改成 chenghui.zhang 的用户权限:

chown chenghui.zhang|chenghui.zhang /home/chenghui.zhang/.ssh
chown chenghui.zhang|chenghui.zhang /home/chenghui.zhang/.ssh/authorized_keys

如下:

640.jpg


客户端连接终端配置



在客户端 ~/.ssh 里面创建一个 config 文件:


$ touch config

编辑:


$ sudo vim config

添加内容:

# 测试服务器
Host test
    HostName xxx.xx.xxx.xxx #服务器ip地址
    Port 22 #服务器配置的ssh端口号
    User chenghui.zhang #在服务器的用户名(对应用户文件夹名字)

然后在终端( macOS 推荐使用 iTerm2 )输入:

$ ssh test

到这里,就可以登上服务器了,但现在你还没获得 root 权限。


服务端设置用户获取 root 权限密码



接下来就是给用户配置需要输入密码获取 root 权限的操作,在服务器 root 权限下给 chenghui.zhang 用户添加密码:


$ passwd chenghui.zhang


然后就是输入密码。


这时还需要在 /etc/sudoers 给该用户临时提升权限( sudo 就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升)

$ sudo vim /etc/sudoers


添加下面内容:

# 格式为(用户名    网络中的主机=(执行命令的目标用户)    执行的命令范围)
$ chenghui.zhang    ALL=(ALL)       ALL


这时候退出保存可能会遇到文件只读状态,我们还需要给该文件更改权限:

$ chmod 700 /etc/sudoers


在登陆服务器之后,需要取得临时 root 权限:

$ sudo su -


提示你输入密码,输入刚刚的密码,这时候你就拥有了root权限了。为安全起见,记得操作完后切换回用户目录:

$ su - chenghui.zhang
相关文章
|
2月前
|
安全 网络安全 算法框架/工具
SSH高版本连接问题排查
【6月更文挑战第21天】SSH高版本连接问题排查
141 0
|
17天前
|
安全 Linux 网络安全
Docker部署ssh连接工具webssh2
【8月更文挑战第2天】Docker部署ssh连接工具webssh2
44 6
Docker部署ssh连接工具webssh2
|
4天前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
14 3
|
4天前
|
监控 网络安全 数据安全/隐私保护
Mac服务器ssh连接工具
Mac服务器ssh连接工具
11 2
|
4天前
|
存储 安全 算法
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
如何使用 PuTTY 创建 SSH 密钥以连接到 VPS
10 2
|
1月前
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
49 2
WXM
|
26天前
|
Java 应用服务中间件 网络安全
Eclipse运行SSM/SSH项目教程
Eclipse运行SSM/SSH项目教程
WXM
20 0
|
2月前
|
网络协议 Linux 网络安全
蓝易云 - centos用ssh登录连接缓慢处理
请根据自己的实际情况尝试以上方法,找出导致SSH登录缓慢的原因,并进行相应的处理。
21 1
|
2月前
|
监控 Java 网络安全
java获取ssh连接时报错com.jcraft.jsch.JSchException: Packet corrupt如何处理?
【6月更文挑战第5天】java获取ssh连接时报错com.jcraft.jsch.JSchException: Packet corrupt如何处理?
360 5
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Jun 03 14:50:45 nodeName sshd[60215]: Accepted password for root from 192.168.0.100 port 15612 ssh2 如何关闭这个连接
【6月更文挑战第6天】Jun 03 14:50:45 nodeName sshd[60215]: Accepted password for root from 192.168.0.100 port 15612 ssh2 如何关闭这个连接
33 2