侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux ssh命令教程:如何远程控制服务器(附实例详解和注意事项)

SSH,全称为Secure Shell,是一种网络协议,用于加密方式远程登录和操作另一台计算机。SSH提供了密码或密钥对认证,保证了数据传输的安全性。

Linux ssh命令适用的Linux版本

SSH客户端在大多数Linux发行版中都是预装的。如果你发现系统中没有SSH,可以根据你的Linux发行版使用下面的命令进行安装:

# 基于apt的发行版(如Debian、Ubuntu、Raspbian、Kali Linux等)
sudo apt-get update && sudo apt-get install openssh-client

# 基于yum的发行版(如RedHat,CentOS 7等)
sudo yum update && sudo yum install openssh-clients

# 基于dnf的发行版(如Fedora,CentOS 8等)
sudo dnf update && sudo dnf install openssh-clients

# 基于apk的发行版(如Alpine Linux)
sudo apk add --update openssh-client

# 基于pacman的发行版(如Arch Linux)
sudo pacman -Syu && sudo pacman -S openssh

# 基于zypper的发行版(如openSUSE)
sudo zypper ref && sudo zypper in openssh

# 基于pkg的FreeBSD发行版
sudo pkg update && sudo pkg install openssh

# 基于pkg的OS X/macOS发行版
brew update && brew install openssh

Linux ssh命令的基本语法

语法格式如下:

ssh [选项] 用户名@主机

Linux ssh命令的常用选项或参数说明

选项描述
-p指定远程主机上的端口号
-i指定用于登录的密钥文件
-v详细模式,用于调试连接问题
-C通过压缩数据来加速传输
-X启用X11转发,可以在本地使用远程图形应用程序
-A启用代理键,允许通过初始服务器转发密钥
-t强制分配伪终端,通常用于执行远程命令

Linux ssh命令实例详解

实例1:基本的SSH登录

[linux@bashcommandnotfound.cn ~]$ ssh username@host.com

这个命令会尝试使用当前用户的用户名和SSH密钥来登录远程主机 host.com

实例2:指定端口号的SSH登录

[linux@bashcommandnotfound.cn ~]$ ssh -p 2222 username@host.com

如果远程服务器不是在默认的SSH端口22上,可以使用 -p 选项指定端口号。

实例3:使用密钥文件登录

[linux@bashcommandnotfound.cn ~]$ ssh -i /path/to/private_key username@host.com

当需要使用特定的密钥文件进行SSH登录时,可以用 -i 选项指定私钥文件的路径。

实例4:启用详细模式进行故障诊断

[linux@bashcommandnotfound.cn ~]$ ssh -v username@host.com

如果连接出现问题,使用 -v 可以显示详细的调试信息,帮助诊断连接问题。

实例5:通过SSH传输文件

[linux@bashcommandnotfound.cn ~]$ scp /path/to/local/file username@host.com:/path/to/remote/directory

scp 命令用于通过SSH协议传输文件,这个例子将本地文件复制到远程主机的指定目录。

实例6:使用SSH执行远程命令

[linux@bashcommandnot```
bash
[linux@user ~]$ ssh username@host.com 'ls -l /path/to/directory'

这个命令会登录远程主机,并在登录后立即执行给定的 ls -l /path/to/directory 命令,然后返回到本地终端。

实例7:复制本地文件夹到远程主机

scp -r /path/to/local/folder username@host.com:/path/to/remote/directory

在这个例子中,-r 参数告诉 scp 命令我们要递归地复制整个文件夹,而不是单个文件。

实例8:通过SSH执行多个命令

ssh username@host.com 'cd /path/to/directory; pwd; ls -l'

在这里,我们通过单引号把要执行的多个命令组合在一起,命令之间通过分号分隔。这将在远程主机上依次执行 cd 切换目录,pwd 显示当前目录,以及 ls -l 列出详细列表。

实例9:在远程主机上创建一个新目录

ssh username@host.com 'mkdir /path/to/new_directory'

这个命令会连接到远程主机并创建一个新目录。

实例10:通过SSH挂载远程文件系统

sshfs username@host.com:/remote/directory /local/mountpoint

这里的 sshfs 命令允许你将远程主机上的目录挂载到本地文件系统上。

实例11:断开连接后仍保持远程会话

ssh -t username@host.com 'tmux new -s my_session'

使用 -t 强制分配伪终端,可以在 ssh 连接中启动 tmuxscreen 会话。这样即便SSH会话断开,会话中运行的进程也会继续执行。

实例12:通过SSH转发本地端口

ssh -L 8080:localhost:80 username@host.com

此命令将远程主机的80端口转发到本地计算机的8080端口。这意味着,你可以通过访问本地机器的8080端口来访问远程服务器的web服务。

实例13:通过SSH转发远程端口

ssh -R 8080:localhost:80 username@host.com

-L 相反,-R 参数将本地端口转发到远程主机。在这个例子中,远程主机的8080端口会被转发到本地主机的80端口。

实例14:禁用密码认证

ssh -o "PasswordAuthentication no" username@host.com

这个命令将禁用密码认证,只允许密钥认证,这在自动化脚本中很有用。

实例15:使用特定的SSH配置文件

ssh -F /path/to/config_file username@host.com

如果你有一个自定义的SSH配置文件,你可以使用 -F 选项指定它。

实例16:通过SSH发送自定义环境变量

ssh -o SendEnv=LANG username@host.com

这个命令尝试发送 LANG 环境变量到远程主机。远程主机需要在 sshd_config 中有 AcceptEnv LANG 配置才能接收。

注意事项

  • 安全性:始终使用密钥对进行认证,避免使用密码认证,因为密码更容易被猜测或暴力破解。
  • 密钥管理:保管好你的私钥,不要让它们暴露在不安全的地方。设置密钥访问权限为 chmod 600 /path/to/private_key
  • 密码提示:如果远程主机配置了需要密码,SSH客户端会提示输入密码。
  • 防火墙设置:确保远程主机的防火墙允许你从本地主机所在的IP地址或网络段连接SSH端口。
  • 软件版本:保持SSH客户端和服务器软件更新到最新版本,以避免已知的安全漏洞和缺陷。

通过使用SSH,你可以安全地管理远程Linux服务器,执行命令,传输文件,甚至运行图形界面程序。掌握SSH的基本命令和高级用法对于任何Linux系统管理员来说都是至关重要的。

0

评论区