在ubuntu20.04下安装ssh进行远程控制和连接的基本操作笔记,怕自己忘记也为了更好的了解,故整理资料将其记录成文章的形式,希望也能帮助到需要的同学。
一、什么是 SSH?
SSH(Secure Shell)是一种网络协议,用于在不安全的网络中为网络服务提供安全的加密通道。SSH 通常用于远程登录服务器、文件传输(通过 SFTP 或 SCP)以及端口转发等场景。它通过加密技术确保数据传输的安全性,防止数据在传输过程中被窃取或篡改。
二、安装 SSH
在 Linux 系统中,SSH 通常由 OpenSSH 软件包提供。OpenSSH 包括客户端(`ssh`)和服务器端(`sshd`)工具。以下是不同 Linux 发行版的安装方法。
1. 基于 Debian 的系统(如 Ubuntu)
在 Ubuntu 或 Debian 系统中,可以使用以下命令安装 SSH 客户端和服务器:
sudo apt update
sudo apt install openssh-client openssh-server
安装完成后,SSH 服务器会自动启动。可以通过以下命令检查其状态:
sudo systemctl status sshd
如果需要重新启动 SSH 服务,可以使用:
sudo systemctl restart sshd
3. 配置 SSH
SSH 的配置文件位于 `/etc/ssh/sshd_config`。可以通过编辑该文件来调整 SSH 服务器的行为。以下是一些常见的配置选项:
- 禁用 root 登录:出于安全考虑,建议禁用 root 用户的直接登录。将以下行从:
PermitRootLogin yes
改为:
PermitRootLogin no
- 更改默认端口:默认情况下,SSH 使用端口 22。为了提高安全性,可以更改默认端口。例如,将端口改为 2222:
Port 2222
修改配置文件后,需要重启 SSH 服务以使更改生效:
sudo systemctl restart sshd
三、使用 SSH
1. 远程登录
SSH 的最常见用途是远程登录到服务器。使用以下命令可以连接到远程服务器:
ssh username@hostname
其中:
- username 是远程服务器上的用户名。
- hostname 是远程服务器的 IP 地址或域名。
例如,连接到 IP 地址为 `192.168.1.100` 的服务器,用户名为 `user`:
ssh user@192.168.1.100
如果更改了默认端口(如上文提到的 2222),需要指定端口号:
ssh -p 2222 user@192.168.1.100
2. 文件传输
SSH 还可以用于安全地传输文件。以下是两个常用的工具:
- SCP(Secure Copy)
SCP 是基于 SSH 的文件传输工具,用于在本地和远程服务器之间复制文件。使用方法如下:
scp local_file user@hostname:remote_path
例如,将本地文件 `example.txt` 传输到远程服务器的 `/home/user` 目录:
scp example.txt user@192.168.1.100:/home/user
如果需要从远程服务器下载文件,可以使用:
scp user@hostname:remote_path local_path
- SFTP(SSH File Transfer Protocol)
SFTP 是一个交互式的文件传输程序,类似于 FTP,但基于 SSH 协议,因此更加安全。可以通过以下命令启动 SFTP:
sftp user@hostname
连接到服务器后,可以使用以下命令进行文件操作:
- put local_file remote_path:上传文件。
- get remote_file local_path:下载文件。
- ls:列出远程目录中的文件。
- exit:退出 SFTP。
3. SSH 密钥认证
为了提高安全性并避免每次输入密码,可以使用 SSH 密钥认证。以下是生成和使用 SSH 密钥的步骤:
1. 生成密钥对
在本地机器上运行以下命令生成密钥对:
ssh-keygen -t rsa -b 2048
按提示操作,可以选择默认路径保存密钥对(通常为 ~/.ssh/id_rsa`和 ~/.ssh/id_rsa.pub)。
2. 将公钥复制到远程服务器
使用 ssh-copy-id命令将公钥复制到远程服务器的 ~/.ssh/authorized_keys文件中:
ssh-copy-id user@hostname
如果没有 ssh-copy-id命令,可以手动将公钥内容复制到远程服务器:
cat ~/.ssh/id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 使用密钥登录
配置完成后,可以直接使用 SSH 登录,无需输入密码:
ssh user@hostname
4.使用ssh在远程开多个终端
ssh user@hostname -CAXY
然后在打开的远程终端输入terminator
接下来使用快捷键ctrl+shift+O/E就可以打开多个终端了
四、SSH 的高级用法(等待更新)
1. 端口转发
SSH 支持端口转发功能,可以将本地端口转发到远程服务器,或者将远程端口转发到本地。这在访问受限网络中的服务时非常有用。
- 本地端口转发
将本地端口转发到远程服务器的某个端口:
ssh -L local_port:remote_host:remote_port user@hostname
例如,将本地的 8080 端口转发到远程服务器的 80 端口:
ssh -L 8080:localhost:80 user@192.168.1.100
- 远程端口转发
将远程端口转发到本地的某个端口:
ssh -R remote_port:local_host:local_port user@hostname
五、常见问题与解决方法(等待更新)
1. 连接被拒绝
如果连接被拒绝,可能是以下原因之一:
- 用户名或密码错误。
- SSH 服务未启动。
- 防火墙或安全组限制了访问。
- 检查 `/etc/ssh/sshd_config` 文件中的配置是否正确。