1.准备工作
确保你已经:
拥有两台可以相互访问的计算机(主机 A 和主机 B)。
在每台计算机上安装了 SSH 服务。对于大多数 Linux 发行版,可以使用以下命令安装:
sudo apt update
sudo apt install openssh-server
确保 SSH 服务正在运行:
sudo systemctl start ssh
sudo systemctl enable ssh
2. 确定主机名和 IP 地址
你需要知道每台主机的 IP 地址。可以通过以下命令获取:
hostname -I
3. 设置 SSH 密钥(可选)
为了避免每次连接时都输入密码,可以使用 SSH 密钥进行无密码登录:
生成 SSH 密钥
在主机 A 上,生成 SSH 密钥对:
ssh-keygen -t rsa -b 2048
然后按 Enter 接受默认路径,设置密码(可选)。
将公钥复制到主机 B
使用 ssh-copy-id
命令将公钥复制到主机 B:
ssh-copy-id -p [port] username@<IP地址>
例如: ssh-copy-id -p 2200 myremote@192.168.1.2
4. 通过 SSH 连接到主机 B
从主机 A 连接到主机 B:
ssh -p [port] username@<IP地址>
例如:(一般port默认为22)
ssh -p 2200 myremote@192.168.1.2
5./.ssh配置文件各个文件用处说明
一、authorized_ksys(主机B存主机A):
authorized_keys 是一个重要的文件,用于 SSH 身份验证。它存储了允许访问用户帐户的公钥。以下是关于 authorized_keys 的详细说明:
1. 文件位置
authorized_keys 文件通常位于用户的 .ssh 目录下,例如:
~/.ssh/authorized_keys
2. 文件内容
authorized_keys 文件的每一行都包含一个公钥,格式如下:
ssh-rsa AAAAB3... user@hostname
ssh-rsa
: 指定密钥类型(如 RSA)。
AAAAB3...
: 是公钥的实际内容。
user@hostname
: 这是一个可选的注释,用于标识密钥的用途或来源。
3. 添加公钥
要将公钥添加到 authorized_keys 文件中,可以使用以下步骤:
生成 SSH 密钥对(如果尚未生成):
ssh-keygen -t rsa -b 2048
复制公钥到远程主机(可以使用 ssh-copy-id 命令):
ssh-copy-id username@remote_host
这将自动将你的公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中。
手动添加公钥:
如果你想手动添加,可以执行以下步骤:
在本地机器上查看公钥内容:
cat ~/.ssh/id_rsa.pub
登录到远程主机,并打开 authorized_keys 文件:
ssh username@remote_host
nano ~/.ssh/authorized_keys
将公钥内容粘贴到文件中并保存。
4. 权限设置
确保 ~/.ssh 目录及其内容的权限正确,以确保 SSH 能正常工作:
目录权限应设置为 700:
chmod 700 ~/.ssh
authorized_keys 文件的权限应设置为 600:
chmod 600 ~/.ssh/authorized_keys
5. 安全性
确保不将私钥分享给他人,只有公钥可以公开。
定期检查 authorized_keys 文件,删除不再需要的公钥,以确保安全性。
6. 常见问题
权限问题: 如果 SSH 报错说“权限被拒绝”,请检查 authorized_keys 文件和 .ssh 目录的权限设置。
公钥未被识别: 确保公钥没有被误修改,并且确实添加到了正确的 authorized_keys 文件中。
总结
authorized_keys 文件在 SSH 访问控制中扮演着关键角色,确保它正确配置和安全存储,可以大大增强远程访问的安全性。
二、is_rsa/is_rsa.pub:
id_rsa
是 SSH 密钥对中的私钥文件,通常用于安全连接到远程主机。以下是有关 id_rsa 的一些详细信息:
1. 生成 SSH 密钥对
要生成 SSH 密钥对,使用以下命令:
ssh-keygen -t rsa -b 2048
-t rsa 指定密钥类型为 RSA。
-b 2048 指定密钥长度为 2048 位(推荐)。
在命令执行后,系统会提示你输入文件名(默认是 ~/.ssh/id_rsa)和密码(可选)。
2. 文件结构
生成的密钥对通常包括以下两个文件:
私钥 (id_rsa): 仅应存放在本地,不应与他人分享。它用于身份验证。
公钥 (id_rsa.pub): 可以分享给需要访问的远程主机,通常会被添加到目标主机的 ~/.ssh/authorized_keys 文件中。
3. 使用 SSH 私钥进行连接
在你有 id_rsa 和相应的公钥的情况下,可以使用以下命令通过 SSH 连接到远程主机:
ssh -i ~/.ssh/id_rsa username@remote_host
如果你已经将公钥添加到目标主机的 authorized_keys 文件中,可以直接运行:
ssh username@remote_host
4. 安全性
保管私钥: 确保你的 id_rsa 文件的权限正确,以防止未授权访问。可以使用以下命令设置权限:
chmod 600 ~/.ssh/id_rsa
使用密码保护: 在生成密钥对时,如果设置了密码保护,可以为私钥增加一层安全性。
5. 常见问题
权限问题: 如果 SSH 报错显示权限不正确,确保 ~/.ssh 目录和 id_rsa 文件的权限正确。
公钥未添加: 确保公钥 (id_rsa.pub) 已正确添加到目标主机的 ~/.ssh/authorized_keys 文件中。
总结
id_rsa 是 SSH 身份验证中重要的一部分,确保你妥善管理它并保持其安全。使用 SSH 密钥连接可以增强安全性,避免使用密码登录。
三、known_hosts
known_hosts 文件是 SSH 的一个重要组成部分,主要用于存储已知主机的公钥,以防止“中间人攻击”。以下是关于 known_hosts 文件的详细说明:
1. 文件位置
known_hosts 文件通常位于用户的 .ssh 目录下,例如:
~/.ssh/known_hosts
2. 文件内容
known_hosts 文件的每一行都包含一个已知主机的公钥,格式如下:
hostname,ip_address key_type key
hostname
: 主机名或 IP 地址。
ip_address
: 主机的 IP 地址(可选)。
key_type
: 密钥类型(如 ssh-rsa, ssh-ed25519 等)。
key
: 主机的公钥。
示例内容
example.com,192.0.2.1 ssh-rsa AAAAB3... user@hostname
3. 作用
安全性: known_hosts 文件帮助 SSH 客户端验证连接的主机的身份。如果连接的主机的公钥与 known_hosts 文件中存储的公钥不匹配,SSH 将发出警告,提示可能存在安全问题。
4. 添加主机
当你第一次通过 SSH 连接到一个新主机时,SSH 客户端会提示你是否信任这个主机:
The authenticity of host 'hostname (ip_address)' can't be established. Are you sure you want to continue connecting (yes/no)?
如果你选择“yes”,该主机的公钥会被添加到 known_hosts 文件中。
5. 手动编辑
如果需要手动添加或删除主机,可以直接编辑 known_hosts 文件:
nano ~/.ssh/known_hosts
删除不需要的行,或添加新的主机公钥。
6. 安全性注意事项
避免手动修改: 手动修改 known_hosts 文件时要小心,确保添加的公钥来自可信源。
警告信息: 如果 SSH 提示“REMOTE HOST IDENTIFICATION HAS CHANGED”,这表示主机的公钥已更改,可能存在安全风险。在这种情况下,需验证公钥的真实性,然后决定是否更新 known_hosts 文件。
7. 常见问题
权限问题: 确保 .ssh 目录及 known_hosts 文件的权限正确,通常 .ssh 目录应设置为 700,known_hosts 文件应设置为 644。
chmod 700 ~/.ssh
chmod 644 ~/.ssh/known_hosts
文件内容错误: 如果文件格式不正确,SSH 可能无法正确识别主机。确保每行都按照正确的格式书写。
总结
known_hosts 文件在确保 SSH 连接安全性中起着关键作用,妥善管理此文件可以有效防止潜在的安全问题。
四、known_hosts.bak
known_hosts.bak 通常是一个备份文件,用于存储原始 known_hosts 文件的副本。这种文件的存在通常是为了在修改或更新 known_hosts 文件时,能够恢复到之前的状态,以防万一。