配置密钥登录
- 生成密钥
1
| ssh-keygen -o -a 256 -t ed25519
|
- 一路回车,要加密码也行
- 复制公钥中的内容
1
| cat ~/.ssh/id_ed25519.pub
|
远程主机配置
配置公钥
1 2 3 4 5 6 7
| cd ~/.ssh
nano authorized_keys
chmod 600 authorized_keys
systemctl restart sshd
|
配置 sshd_config
此处命令配置 sshd_config
,新机器无脑照搬就行, 有自定义设置的就别直接执行, cat <<'TEXT' > /etc/ssh/sshd_config
后 TEXT
前的内容为 sshd_config
的内容, 自行手动编辑就行,编辑前建议备份一下原来的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| mv /etc/ssh/sshd_config /etc/ssh/sshd_config.b cat <<'TEXT' > /etc/ssh/sshd_config Include /etc/ssh/sshd_config.d/*.conf # 端口, 默认22 #Port 22 # 监听地址相关, 不需修改 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: # Ciphers and keying #RekeyLimit default none # 日志 # 指定将日志消息通过哪个日志子系统(facility)发送 SyslogFacility AUTH # 指定日志等级 LogLevel INFO # 鉴权 # 限制用户必须在指定的时限(单位秒)内认证成功 LoginGraceTime 2m # 允许root用户登录 PermitRootLogin yes # 指定是否要求sshd(8)在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查 StrictModes yes # 指定每个连接最大允许的认证次数 MaxAuthTries 6 # 最大允许保持多少个连接。默认值是 10 MaxSessions 16 # 是否开启公钥认证, 仅可以用于SSH-2. 默认值为"yes" PubkeyAuthentication yes # 是否允许密码验证 PasswordAuthentication no # 是否允许空密码 PermitEmptyPasswords no # 是否允许质疑-应答(challenge-response)认证 ChallengeResponseAuthentication no # 是否通过PAM验证 UsePAM yes # 是否允许X11转发 X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes # 指定sshd是否在每一次交互式登录时打印 /etc/motd 文件的内容 PrintMotd no # 指定sshd是否在每一次交互式登录时打印最后一位用户的登录时间 PrintLastLog yes # 配置超时 TCPKeepAlive yes ClientAliveInterval 120 ClientAliveCountMax 10 # 配置Pid PidFile /var/run/sshd.pid # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server TEXT service sshd restart
|
创建 config 文件
编辑 config 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Host * ServerAliveInterval 120
Host target1 HostName $HOST Port $PORT IdentityFile ~/.ssh/id_ed25519 User user
Host target2 HostName $HOST Port $PORT IdentityFile ~/.ssh/id_ed25519 User user
|
- 其中
ServerAliveInterval
是为了保持心跳
$HOST
是目标机器的IP
$PORT
是目标机器 ssh 端口
target
是自己设置的目标机器的别名
Host *
下的 ServerAliveInterval
是可以被下面的 Host target
继承的
打完收工
输入 ssh target1
即可快速连接远程主机