Skip to content

Linux 常用命令

Linux 命令查询

ssh 命令

连接远程主机

SSH(Secure Shell)是一种通过网络远程登录和执行命令的安全协议和工具。SSH 提供了加密的通信和身份验证机制,可以安全地远程管理和操作远程主机。

SSH 命令的基本语法如下:

bash
ssh [选项] [用户名@]主机
ssh [选项] [用户名@]主机

其中,[选项] 是可选的,用于指定一些特定的行为。[用户名@]主机 是要连接的远程主机的用户名和主机名或 IP 地址。

下面是一些常用的选项:

  • -p <port>:指定远程主机上的 SSH 端口,默认为 22。
  • -i <identity_file>:指定用于身份验证的私钥文件。
  • -L <local_port>:<remote_host>:<remote_port>:在本地主机上创建端口转发。
  • -R <remote_port>:<local_host>:<local_port>:在远程主机上创建端口转发。
  • -X:启用 X11 转发,允许远程显示图形界面。
  • -C:压缩传输的数据。
  • -v:详细显示 SSH 连接的调试信息。

下面是一些示例用法:

  1. 连接到远程主机:
bash
ssh user@remote
ssh user@remote

这将使用用户名 user 连接到远程主机 remote

  1. 指定远程主机上的 SSH 端口:
bash
ssh -p 2222 user@remote
ssh -p 2222 user@remote

这将使用用户名 user 连接到远程主机 remote 的 SSH 端口 2222。

  1. 使用私钥文件进行身份验证:
bash
ssh -i ~/.ssh/private_key user@remote
ssh -i ~/.ssh/private_key user@remote

这将使用 ~/.ssh/private_key 文件中的私钥进行身份验证,并连接到远程主机 remote

生成 ssh 密钥

要生成 SSH 密钥,可以按照以下步骤进行操作:

  1. 打开终端或命令提示符窗口。

  2. 输入以下命令来生成 SSH 密钥对:

bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这里的 -t rsa 指定生成 RSA 密钥,-b 4096 指定密钥长度为 4096 位,-C 后面的内容是你的电子邮件地址,可以替换为你自己的邮件地址。

  1. 系统会提示你选择密钥的保存位置,默认是在 ~/.ssh/id_rsa。按回车键接受默认位置,或者输入你想要的自定义位置。

  2. 接下来,系统会要求你输入一个密码短语(passphrase)。密码短语是用于保护你的私钥的密码,可以为空,但建议设置一个强密码来增加安全性。输入密码短语后,按回车键确认。请注意,当你输入密码短语时,终端不会显示任何字符。

  3. 系统将生成公钥和私钥文件。公钥文件的默认路径是 ~/.ssh/id_rsa.pub,私钥文件的默认路径是 ~/.ssh/id_rsa

  4. 生成的公钥文件(.pub 后缀)是你要分享给其他人或上传到远程服务器的文件。你可以使用文本编辑器打开公钥文件,复制其中的内容。

现在,你已经成功生成了 SSH 密钥对。私钥文件应该妥善保管,不要泄露给其他人。公钥文件可以分享给需要的人或上传到需要使用你的密钥的远程服务器上。

ssh-copy-id 复制公钥

ssh-copy-id 是一个用于将本地主机的公钥复制到远程主机上的实用工具。它简化了将 SSH 公钥添加到远程主机的过程,让你可以轻松地进行无密码登录。

使用 ssh-copy-id 命令,你可以将本地主机上的公钥复制到远程主机的授权文件中,这样你就可以使用私钥进行无密码登录到远程主机。

ssh-copy-id 命令的基本语法如下:

bash
ssh-copy-id [-i [identity_file]] [user@]host
ssh-copy-id [-i [identity_file]] [user@]host

其中,-i [identity_file] 是可选的,用于指定要使用的公钥文件,默认为 ~/.ssh/id_rsa.pub[user@]host 是远程主机的用户名和主机名或 IP 地址。

使用 ssh-copy-id 的步骤如下:

  1. 打开终端或命令提示符窗口。

  2. 输入以下命令来复制公钥到远程主机:

bash
ssh-copy-id user@remote
ssh-copy-id user@remote

user 替换为远程主机的用户名,remote 替换为远程主机的主机名或 IP 地址。

  1. 系统会提示你输入远程主机的密码。输入密码后,按回车键确认。

  2. ssh-copy-id 命令会将本地主机的公钥复制到远程主机的 ~/.ssh/authorized_keys 文件中。如果该文件不存在,命令会自动创建。

完成上述步骤后,你就可以使用私钥进行无密码登录到远程主机了。下次连接远程主机时,SSH 将使用私钥进行身份验证,而无需输入密码。

请注意,如果远程主机的 ~/.ssh 目录权限不正确,或者 ~/.ssh/authorized_keys 文件权限不正确,ssh-copy-id 命令可能会失败。在这种情况下,你可以手动调整权限并再次尝试。

总结起来,ssh-copy-id 命令是一个方便的工具,可以帮助你将本地主机的公钥复制到远程主机上,实现无密码登录。

scp 命令

SCP(Secure Copy)是一种在本地主机和远程主机之间进行文件传输的命令。它使用 SSH 协议进行安全的文件传输,可以在不同的操作系统之间复制文件和目录。

SCP 命令的基本语法如下:

bash
scp [选项] [源文件路径] [目标文件路径]
scp [选项] [源文件路径] [目标文件路径]

其中,[选项] 是可选的,用于指定一些特定的行为。[源文件路径] 是要传输的文件或目录在本地主机上的路径,[目标文件路径] 是传输的目标位置在远程主机上的路径。

下面是一些常用的选项:

  • -r:递归复制整个目录。
  • -P <port>:指定远程主机上的 SSH 端口,默认为 22。
  • -p:保留文件的权限和时间戳。
  • -q:安静模式,不显示传输过程。
  • -C:压缩传输的数据。

下面是一些示例用法:

  1. 从本地主机复制文件到远程主机:
bash
scp file.txt user@remote:/path/to/destination
scp file.txt user@remote:/path/to/destination

这将把本地的 file.txt 文件复制到远程主机的 /path/to/destination 目录下。

  1. 从远程主机复制文件到本地主机:
bash
scp user@remote:/path/to/file.txt /local/path
scp user@remote:/path/to/file.txt /local/path

这将把远程主机上的 /path/to/file.txt 文件复制到本地主机的 /local/path 目录下。

  1. 递归复制整个目录:
bash
scp -r directory user@remote:/path/to/destination
scp -r directory user@remote:/path/to/destination

这将递归地复制本地的 directory 目录及其内容到远程主机的 /path/to/destination 目录下。

请注意,上述示例中的 userremote 需要替换为实际的用户名和远程主机的 IP 地址或主机名。

这是 SCP 命令的基本用法介绍,你可以根据自己的需求使用不同的选项来满足特定的文件传输需求。

chmod 命令

chmod 是一个用于修改文件或目录权限的命令。它可以控制文件或目录的读、写和执行权限,以及文件的所有者、所属组等属性。

chmod 命令的基本语法如下:

bash
chmod [options] mode file
chmod [options] mode file

其中,options 是可选的,用于指定一些额外的选项。mode 是权限模式,用于指定要设置的权限。file 是要修改权限的文件或目录。

mode 可以使用以下形式之一:

  • 符号模式(Symbolic Mode):使用符号来表示权限的增加或减少。常用的符号包括:

    • u:表示文件所有者(user)的权限。
    • g:表示文件所属组(group)的权限。
    • o:表示其他用户(others)的权限。
    • a:表示所有用户的权限,相当于 ugo 的组合。
    • +:增加权限。
    • -:减少权限。
    • =:设置权限。

    例如,u+x 表示给文件所有者添加执行权限,g-rw 表示从文件所属组移除读写权限。

  • 数字模式(Numeric Mode):使用数字来表示权限的组合。每个权限对应一个数字:

    • 读权限(r):4
    • 写权限(w):2
    • 执行权限(x):1

    通过将这些数字相加,可以得到要设置的权限的组合。例如,chmod 755 file 表示给文件所有者赋予读、写和执行权限,给文件所属组和其他用户赋予读和执行权限。

chmod 命令的一些常用选项包括:

  • -R:递归地修改目录及其子目录中的文件权限。
  • -v:显示详细的操作信息。
  • -c:只显示发生更改的文件信息。

下面是一些示例用法:

  1. 将文件设置为可读写执行权限:
bash
chmod 777 file
chmod 777 file
  1. 给文件所有者添加执行权限,移除文件所属组的写权限,给其他用户添加读权限:
bash
chmod u+x,g-w,o+r file
chmod u+x,g-w,o+r file
  1. 递归地将目录及其子目录中的文件设置为只读权限:
bash
chmod -R 444 directory
chmod -R 444 directory
  1. 给文件添加可执行权限,通常用于脚本
bash
chmod +x install.sh
chmod +x install.sh

请注意,修改文件或目录的权限可能需要管理员权限或文件所有者的权限。确保你有足够的权限来执行 chmod 命令。

总结起来,chmod 命令是一个用于修改文件或目录权限的命令,可以通过符号模式或数字模式来设置权限。它是管理文件和目录访问权限的重要工具。