SSH (Secure Shell) 是一种加密的网络协议,用于在不安全的网络上安全地进行远程登录和其他网络服务。
ssh username@hostname
# 示例:
ssh admin@192.168.1.100
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server
# CentOS/RHEL
sudo yum install openssh-server
# Ubuntu/Debian
sudo systemctl start ssh
sudo systemctl enable ssh
# CentOS/RHEL
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status ssh
# 或
sudo service ssh status
编辑配置文件 /etc/ssh/sshd_config
:
Port 2222 # 改为你选择的端口号
然后重启SSH服务:
sudo systemctl restart ssh
PermitRootLogin no
AllowUsers username1 username2
# 或
AllowGroups sshusers
PubkeyAuthentication yes
ssh-keygen -t rsa -b 4096
# 或使用更安全的ed25519算法
ssh-keygen -t ed25519
ssh-copy-id username@hostname
# 或者手动复制
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# 启动SSH代理
eval "$(ssh-agent -s)"
# 添加私钥到代理
ssh-add ~/.ssh/id_rsa
# 本地端口转发
ssh -L local_port:remote_host:remote_port username@ssh_server
# 远程端口转发
ssh -R remote_port:local_host:local_port username@ssh_server
# 动态端口转发(SOCKS代理)
ssh -D local_port username@ssh_server
示例配置:
Host myserver
HostName server.example.com
User admin
Port 2222
IdentityFile ~/.ssh/myserver_key
ServerAliveInterval 60
ssh username@hostname "command"
# 示例:
ssh admin@webserver "df -h"
# 从本地复制到远程
scp local_file username@hostname:remote_path
# 从远程复制到本地
scp username@hostname:remote_file local_path
# 递归复制目录
scp -r local_dir username@hostname:remote_path
~/.ssh/known_hosts
文件ssh -v username@hostname # 基本调试
ssh -vvv username@hostname # 详细调试
通过掌握这些SSH技能,你将能够高效、安全地管理远程Linux服务器,这是每个SysOps工程师必备的核心能力之一。