Debian教程

Debian SSH配置

Secure Shell(SSH)是一种用于在因特网上建立安全连接的协议。在Debian操作系统中,有一个免费的SSH版本称为OpenSSH,它在openssh-client和openssh-server软件包中提供。OpenSSH是一个功能强大且广泛使用的开源工具集,提供了加密的远程登录、文件传输和隧道功能。

对于用户来讲, ssh(1) 功能比telnet(1) 更加智能和安全. 不像 telnet命令, ssh 命令不会在遇到 telnet 的退出字符(初始默认是 CTRL-])时停止.

服务器远程访问和工具列表:

软件包 流行度 大小 工具 说明
openssh-client V:868, I:996 5821 ssh(1) SSH 客户端
openssh-server V:733, I:819 1955 sshd(8) SSH 服务端
ssh-askpass I:23 102 ssh-askpass(1) 请求用户输入 ssh-add 密码 (简单的 X)
ssh-askpass-gnome V:0, I:3 199 ssh-askpass-gnome(1) 请求用户输入 ssh-add 密码 (GNOME)
ssh-askpass-fullscreen V:0, I:0 48 ssh-askpass-fullscreen(1) 请求用户输入 ssh-add 密码 (GNOME),有更好看的界面
shellinabox V:0, I:1 507 shellinaboxd(1) 浏览器访问 VT100 终端模拟器 网页服务器

虽然 shellinabox 不是一个 SSH 程序,它列在这里作为远程终端访问的一个有趣的替代.

一、SSH基础

OpenSSH SSH 后台守护进程(daemon)只支持 SSH 2协议。

注意:

  • 如果想要运行 OpenSSH 服务,"/etc/ssh/sshd_not_to_be_run"必须不存在;
  • 不要打开基于 rhost 的认证( /etc/ssh/sshd_config 中的 HostbasedAuthentication )。

SSH 配置文件列表:

配置文件 配置文件描述
/etc/ssh/ssh_config SSH 客户端默认,
/etc/ssh/sshd_config SSH 服务端默认
~/.ssh/authorized_keys 该账户连接到这个服务器上的客户端使用的默认 SSH 公钥
~/.ssh/id_rsa 用户的 SSH-2 RSA 私钥
~/.ssh/id_key-type-name 用户的 SSH-2 密钥, key-type-name 为 ecdsa、 ed25519 等

从客户端启动一个 ssh(1) 连接.

SSH 客户端启动例子列表:

命令 说明
ssh username@hostname.domain.ext 使用默认模式连接
ssh -v username@hostname.domain.ext 有详细信息的默认连接模式
ssh -o PreferredAuthentications=password username@hostname.domain.ext SSH 2 版本,强制使用密码
ssh -t username@hostname.domain.ext passwd 在远程主机上运行 passwd 命令来更新密码

二、远程主机用户名

如果在本地和远程主机上使用相同的用户名,能够省略输入"username@"。

即使在本地和远程主机使用不同的用户名,可以使用 "~/.ssh/config" 来省略输入用户名.对于 Debian Salsa 服务器,使用账户名 "foo-guest",可以设置 "~/.ssh/config" 包含下面的内容。

Host salsa.debian.org people.debian.org
User foo-guest

三、免密码远程连接

使用"PubkeyAuthentication" (SSH-2 协议),人们可以避免记住远程系统的密码。在远程系统的"/etc/ssh/sshd_config"里,设置相应的条目, "PubkeyAuthentication yes";在本地生成授权秘钥对,并安装公钥到远程系统。

$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"

可以在 "~/.ssh/authorized_keys" 里给条目增加选项来限制主机和运行特定的命令

四、处理其它SSH客户端

其它平台上有一些免费的 SSH 客户端。

其它平台上免费 SSH 客户端列表:

环境 免费 SSH 程序
Windows puTTY (PuTTY: a free SSH and Telnet client) (GPL)
Windows (cygwin) SSH in cygwin (Cygwin: Get that Linux feeling - on Windows) (GPL)
Mac OS X OpenSSH;在终端应用中使用 ssh (GPL)

五、建立ssh代理

用密码来保护 SSH 认证私钥是安全的。如果密码没有设置,使用 "ssh-keygen -p" 来设置。把公钥 (比如:"~/.ssh/id_rsa.pub") 放到远程主机的"~/.ssh/authorized_keys",这个远程主机使用上面描述的基于密码的连接方式。

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa:
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

从这里执行接下来的命令,就不再需要密码。

$ scp foo username@remote.host:foo

按 ^D 来终结 ssh 代理会话。对于 X 服务端,通常的 Debian 启动脚本会作为父进程执行 ssh-agent。所以只需要执行一次 ssh-add。进一步的信息,请阅读 ssh-agent(1) 和 ssh-add(1).

六、远程主机发送邮件

如果在一个正确设置 了DNS 的服务器上有一个 SSH shell 账号,能够将在本地工作站上生成的邮件,作为远程服务器上的邮件,真正的从远程服务器上发送。

$ ssh username@example.org /usr/sbin/sendmail -bm -ti -f "username@example.org" < mail_data.txt

七、SMTP/POP3端口转发

通过 ssh 建立一个这样的管道连接,从 localhost 的 4025 端口到 remote-server 的 25 端口,并从 localhost 的 4110 端口到 remote-server 的 110 端口,请在本机执行如下命令.

# ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server

这是跨越因特网建立 SMTP/POP3 服务连接的安全方法。在远程主机"/etc/ssh/sshd_config"里设置"AllowTcpForwarding"条目为 "yes".

八、SSH关闭远程系统

可以使用 at(1) 命令来从 SSH 终端里保护"shutdown -h now"操作过程。

# echo "shutdown -h now" | at now

在 screen(1) 会话里运行 "shutdown -h now",是另外一个方法来做这同样的事情。

九、SSH故障排查

  • 如果遇到问题,检查配置文件的权限并用 "-v" 选项运行 ssh。
  • 如果是 root 账户,并有使用防火墙,使用 "-p" 选项; 这可以避免使用1 — 1023 之间的服务端口.
  • 如果 ssh 连接到远程站点突然停止工作,这也许是系统管理员胡乱操作的结果,可能是在系统维护时改变了 "host_key". 在确认这个情况后,并且没有人试图用聪明的黑客技术来篡改远程主机,可以在本机 "~/.ssh/known_hosts" 里删除 "host_key" 条目来重新获得连接。
广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录