如何在ubuntu中启用SSH服务

本文详细介绍了如何在Ubuntu系统中启用SSH服务,包括安装OpenSSH服务器、配置SSH客户端和服务端软件、使用SCP和SFTP命令传输文件等内容,并提供了SSH密钥的生成与使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在ubuntu中启用SSH服务

Posted by 荒野无灯 @ 七月 15, 2010 at 9:09 下午 under ubuntu server 0 Comments   

一般是选择安装OpenSSH server 。
不废话,直接安装:

1
sudo apt-get install openssh-server

查看SSH server正在工作与否:

1
2
ubuntu$ ps -aef | grep sshd
root     24114     1   0 15: 18 ?        00:00:00 /usr /sbin /sshd

好,现在连接一下本地的SSH服务器看:

1
ubuntu$ ssh localhost

然后会问你是否继续,输入yes即可。
用你本地的账号和密码登录看下。
如果登录成功,OK,WELL DONE !

修改配置文件:
修改前先备份原始配置文件是个好习惯:

1
2
cp /etc /ssh /sshd_config /etc /ssh /sshd_config.orig
chmod a-w /etc /ssh /sshd_config.orig
1
vim /etc /ssh /sshd_config

配置SSH
配置客户端的软件
OpenSSH有三种配置方式:命令行参数、用户配置文件和系统级的配置文件(“/etc/ssh/ssh_config”)。命令行参数优先于配置文 件,用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把“/etc/ssh /ssh_config”拷贝并重新命名为“~/.ssh/config”。

标准的配置文件大概是这样的:

[lots of explanations and possible options listed]

1
2
3
4
5
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

还有很多选项的设置可以用“man ssh”查看“CONFIGURATION FILES”这一章。
配置文件是按顺序读取的。先设置的选项先生效。
假定你在www.foobar.com上有一个名为“bilbo”的帐号。而且你要把“ssh-agent”和“ssh-add”结合起来使用并且使用数 据压缩来加快传输速度。因为主机名太长了,你懒得输入这么长的名字,用“fbc”作为“www.foobar.com”的简称。你的配置文件可以是这样 的:

1
2
3
4
5
6
7
8
9
10
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
Compression yes
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no

你输入“ssh fbc”之后,SSH会自动地从配置文件中找到主机的全名,用你的用户名登录并且用“ssh-agent”管理的密匙进行安全验证。这样很方便吧!
用SSH连接到其它远程计算机用的还是“paranoid(偏执)”默认设置。如果有些选项没有在配置文件或命令行中设置,那么还是使用默认的“paranoid”设置。
在我们上面举的那个例子中,对于到www.foobar.com的SSH连接:“ForwardAgent”和“Compression”被设置为 “Yes”;其它的设置选项(如果没有用命令行参数)“ForwardX11”和“FallBackToRsh”都被设置成“No”。
其它还有一些需要仔细看一看的设置选项是:
l CheckHostIP yes
这个选项用来进行IP地址的检查以防止DNS欺骗。
l CompressionLevel
压缩的级别从“1”(最快)到“9”(压缩率最高)。默认值为“6”。
l ForwardX11 yes
为了在本地运行远程的X程序必须设置这个选项。
l LogLevel DEBUG
当SSH出现问题的时候,这选项就很有用了。默认值为“INFO”。
配置服务端的软件
SSH服务器的配置使用的是“/etc/ssh/sshd_config”配置文件,这些选项的设置在配置文件中已经有了一些说明而且用“man sshd”也可以查看帮助。请注意OpenSSH对于SSH 1.x和2.x没有不同的配置文件。
在默认的设置选项中需要注意的有:
l PermitRootLogin yes
最好把这个选项设置成“

PermitRootLogin without-password

”,这样“root”用户就不能从没有密匙的计算机上登录。把这个选项设置成“no”将禁止“root”用户登录,只能用“su”命令从普通用户转成“root”。
l X11Forwarding no
把这个选项设置成“yes”允许用户运行远程主机上的X程序。就算禁止这个选项也不能提高服务器的安全因为用户可以安装他们自己的转发器(forwarder),请参看“man sshd”。
l PasswordAuthentication yes
把这个选项设置为“no”只允许用户用基于密匙的方式登录。这当然会给那些经常需要从不同主机登录的用户带来麻烦,但是这能够在很大程度上提高系统的安全性。基于口令的登录方式有很大的弱点。
l # Subsystem /usr/local/sbin/sftpd
把最前面的#号去掉并且把路径名设置成“/usr/bin/sftpserv”,用户就能使用“sftp”(安全的FTP)了(sftpserv在 sftp软件包中)。因为很多用户对FTP比较熟悉而且“scp”用起来也有一些麻烦,所以“sftp”还是很有用的。而且2.0.7版本以后的图形化的 ftp工具“gftp”也支持“sftp”。
拷贝文件
用“scp”拷贝文件
SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个“scp”命令。
假定你想把本地计算机当前目录下的一个名为“dumb”的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为“bilbo”。可以用这个命令:

1
scp dumb bilbo @www.foobar.com:.

把文件拷贝回来用这个命令:

1
scp bilbo @www.foobar.com:dumb .

“scp”调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。
如果在你的“~/.ssh/config”文件中已经为www.foobar.com做了这样的配置:

1
2
3
4
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes

那么你就可以用“fbc”来代替“bilbo@www.foobar.com”,命令就简化为“scp dumb fbc:.”。
“scp”假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。
用“scp”命令的“-r”参数允许递归地拷贝目录。“scp”也可以在两个不同的远程主机之间拷贝文件。
有时候你可能会试图作这样的事:用SSH登录到www.foobar.com上之后,输入命令“scp [local machine]:dumb .”想用它把本地的“dumb”文件拷贝到你当前登录的远程服务器上。这时候你会看到下面的出错信息:

ssh: secure connection to [local machine] refused

之所以会出现这样的出错信息是因为你运行的是远程的“scp”命令,它试图登录到在你本地计算机上运行的SSH服务程序……所以最好在本地运行“scp”除非你的本地计算机也运行SSH服务程序。
用“sftp”拷贝文件
如果你习惯使用ftp的方式拷贝文件,可以试着用“sftp”。“sftp”建立用SSH加密的安全的FTP连接通道,允许使用标准的ftp命令。还有一 个好处就是“sftp”允许你通过“exec”命令运行远程的程序。从2.0.7版以后,图形化的ftp客户软件“gftp”就支持“sftp”。
如果远程的服务器没有安装sftp服务器软件“sftpserv”,可以把“sftpserv”的可执行文件拷贝到你的远程的家目录中(或者在远程计算机 的$PATH环境变量中设置的路径)。“sftp”会自动激活这个服务软件,你没有必要在远程服务器上有什么特殊的权限。
用“rsync”拷贝文件
“rsync”是用来拷贝、更新和移动远程和本地文件的一个有用的工具,很容易就可以用“-e ssh”参数和SSH结合起来使用。“rsync”的一个优点就是,不会拷贝全部的文件,只会拷贝本地目录和远程目录中有区别的文件。而且它还使用很高效 的压缩算法,这样拷贝的速度就很快。
用“加密通道”的ftp拷贝文件
如果你坚持要用传统的FTP客户软件。SSH可以为几乎所有的协议提供“安全通道”。FTP是一个有一点奇怪的协议(例如需要两个端口)而且不同的服务程序和服务程序之间、客户程序和客户程序之间还有一些差别。
实现“加密通道”的方法是使用“端口转发”。你可以把一个没有用到的本地端口(通常大于1000)设置成转发到一个远程服务器上,然后只要连接本地计算机上的这个端口就行了。有一点复杂是吗?
其实一个基本的想法就是,转发一个端口,让SSH在后台运行,用下面的命令:

1
ssh [user @remote host ] -f -L 1234: [remote host ]: 21 tail -f /etc /motd

接着运行FTP客户,把它设置到指定的端口:

1
ftp -u [username ] -p 1234 localhost

当然,用这种方法很麻烦而且很容易出错。所以最好使用前三种方法。
用SSH设置“加密通道”
“加密通道”的基础知识
SSH的“加密通道”是通过“端口转发”来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道”。然后只要 连接到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候“加密通道”才能工 作。可以用下面命令检查一些远程服务器是否运行SSH服务:
telnet [full name of remote host] 22
如果收到这样的出错信息:
telnet: Unable to connect to remote host: Connection refused
就说明远程服务器上没有运行SSH服务软件。
端口转发使用这样的命令语法:
ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]
你不仅可以转发多个端口而且可以在“~/.ssh/config”文件中用“LocalForward”设置经常使用的一些转发端口。
为POP加上“加密通道”
你可以用POP协议从服务器上取email。为POP加上“加密通道”可以防止POP的密码被网络监听器(sniffer)监听到。还有一个好处就是SSH的压缩方式可以让邮件传输得更快。
假定你在pop.foobar.com上有一个POP帐号,你的用户名是“bilbo”你的POP口令是“topsecret”。用来建立SSH“加密通道”的命令是:
ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
(如果要测试,可以把“sleep”的值加到500)。运行这个命令之后会提示你输入POP口令:
bilbo@pop.foobar.com‘s password:
输入口令之后就可以用“telnet”连接到本地的转发端口了。
telnet localhost 1234
你会收到远程mail服务器的“READY”消息。
当然,这个方法要求你手工输入所有的POP命令,这是很不方便的。可以用Fetchmail(参考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在“/usr/doc/fetchmail-[…]”目录下的Fetchmail的FAQ都提供了一些具体的例子。
请注意IMAP协议使用的是不同的端口:IMAP v2的端口号为143而IMAP v3的端口号为220。
为X加上“加密通道”
如果你打算在本地计算机上运行远程SSH服务器上的X程序,那么登录到远程的计算机上,创建一个名为“~/.ssh/environment”的文件并加上这一行:
XAUTHORITY=/home/[remote user name]/.Xauthority
(如果在远程主机上你的家目录下不存在“.Xauthority”这个文件,那么当用SSH登录的时候就会自动创建)。
比如启动一个X程序(xterm)可以这个命令:
ssh -f -X -l [remote user name] [remote machine] xterm
这将在远程运行xterm这个程序。其它的X程序也是用相同的方法。
为linuxconf加上“加密通道”
Linuxconf是Linux的配置工具,它支持远程管理。Linuxconf的FAQ重说明了如何通过SSH使用linuxconf:
其命令为:
remadmin –exec [link_command] linuxconf –guiproto
如果你想在两台计算机之间用加密的方式传送信息,那么最好用ssh。命令是:
remadmin –exec ssh -l [account] linuxconf –guiproto
这是非常有效的而且运行用图形界面管理计算机。
这种方法需要在客户端安装linuxconf。其它的方法还有直接登录到服务器上用“X11Forwarding”或字符界面运行linuxconf。
为Webmin加上“加密通道”
Webmin是一个新的基于浏览器的配置工具。它运行在1000端口。你可以用SSH的“端口转发”对它进行加密:

1
ssh -f -l [remote user name ] [remote host ] -L 1234: [remote host ]: 10000 tail -f /etc /motd

把浏览器指向 http://localhost:1234

修改完后记得重启SSH服务:

1
sudo /etc /init.d / ssh restart

SSH Keys
SSH密钥允许你不需要输入密码就可以登录主机。
产生密钥,在自己机子上:

1
ssh-keygen -t dsa

这样为会用户创建一个DSA加密的身份标识。期间你会被要求输入密码,如何不想输入密码,可以直接按Enter。

现在你有一对密匙了:公用密匙要分发到所有你想用ssh登录的远程主机上去;私人密匙要好好地保管防止别人知道你的私人密匙。用“ls –l ~/.ssh/identity”或“ls –l ~/.ssh/id_dsa”所显示的文件的访问权限必须是“-rw——-”。

默认情况下,公钥会保存在文件 ~/.ssh/id_dsa.pub ,私钥保存在~/.ssh/id_dsa 。把公钥COPY到远程主机并且附加到
~/.ssh/authorized_keys通过键入以下命令:

1
ssh-copy-id username @remotehost

最后 ,仔细检查 authorized_keys 文件的权限,确保只有通过身份验证的用户才有读写权限。如果不是,通过以下命令修改下权限:

1
chmod 600 .ssh /authorized_keys

如果除了你之外别人对“authorized_keys”文件也有写的权限,SSH就不会工作。

现在你应该可以连接到SSH服务器而不用输入密码了。

如果你想从不同的计算机登录到远程主机,“authorized_keys”文件也可以有多个公用密匙。在这种情况下,必须在新的计算机上重新生成 一对密匙,然后把生成的“identify.pub”文件拷贝并粘贴到远程主机的“authorized_keys”文件里。当然在新的计算机上你必须有 一个帐号,而且密匙是用口令保护的。有一点很重要,就是当你取消了这个帐号之后,别忘了把这一对密匙删掉。

参考:http://www.unixtutorial.org/2009/05/ubuntu-ssh-how-to-enable-secure-shell-in-ubuntu/

https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html

ttp://www.mandrakeuser.org/secure/index.html

http://www.360doc.com/content/07/0601/11/7362_532451.shtml

高级应用:

https://help.ubuntu.com/community/SSH/OpenSSH/Advanced?action=show&redirect=AdvancedOpenSSH

 

<think>好的,我现在需要帮助用户在Ubuntu上安装SSH服务。首先,我应该确认用户的需求是什么。他们可能想要通过SSH远程访问他们的Ubuntu系统,或者管理服务器。接下来,我需要回忆安装SSH的步骤,确保提供准确的信息。 首先,Ubuntu通常使用OpenSSH作为SSH服务。安装的命令应该是sudo apt install openssh-server。不过,我需要确认这个包的名字是否正确,可能还要更新系统包列表,所以可能需要先运行sudo apt update。然后,安装完成后要确保服务启动并启用开机自启,使用systemctl命令。另外,防火墙设置也很重要,如果用户启用了UFW,需要允许SSH的端口,默认是22。用户可能还关心如何检查服务状态,确认安装是否成功。最后,可能需要提醒用户安全注意事项,比如修改默认端口或使用密钥认证。 还要考虑用户可能的后续问题,比如如何配置SSH,或者遇到连接问题怎么办。但当前问题只是安装,所以保持回答集中在安装步骤上。需要分步骤说明,清晰易懂,适合不同水平的用户。需要检查是否有任何可能的错误,比如包名是否正确,命令是否存在。另外,是否需要重启服务,或者配置文件的修改。可能用户安装后想立即使用,所以验证步骤也很重要,比如用ssh localhost来测试。 最后,确保语言简洁,使用中文,避免术语混淆,必要时解释命令的作用,比如sudo和systemctl的含义。可能还需要提到如何卸载或停止服务,但用户没有问,所以可能不需要。总之,结构应该是:更新系统、安装包、启动服务、防火墙设置、验证安装,可能加一些注意事项。</think>在 Ubuntu 中安装 SSH 服务的步骤如下: --- ### **1. 更新软件包列表** ```bash sudo apt update ``` --- ### **2. 安装 OpenSSH 服务端** ```bash sudo apt install openssh-server ``` 系统会自动下载并安装 SSH 服务(默认使用 `Port 22`)。 --- ### **3. 验证 SSH 服务状态** ```bash sudo systemctl status ssh ``` 正常状态应显示 `active (running)`。 --- ### **4. 配置防火墙(若启用 UFW)** 开放默认 SSH 端口: ```bash sudo ufw allow 22 ``` 若修改过端口号(如 2222),需替换为实际端口: ```bash sudo ufw allow 2222 ``` --- ### **5. 远程连接测试** 从其他设备通过 SSH 访问: ```bash ssh 用户名@Ubuntu机器的IP地址 ``` 例如: ```bash ssh user@192.168.1.100 ``` --- ### **6. 高级配置(可选)** 编辑配置文件 `/etc/ssh/sshd_config` 可修改: - 端口号:`Port 2222` - 禁用密码登录:`PasswordAuthentication no` - 限制用户登录:`AllowUsers your_username` 修改后需重启服务: ```bash sudo systemctl restart ssh ``` --- ### **注意事项** 1. **安全性建议** - 建议禁用 root 登录(设置 `PermitRootLogin no`) - 使用 SSH 密钥认证代替密码 2. **服务管理命令** - 停止 SSH 服务:`sudo systemctl stop ssh` - 禁用开机启动:`sudo systemctl disable ssh` 3. **卸载 SSH 服务** ```bash sudo apt remove openssh-server ``` --- ### **验证安装成功** 本地测试: ```bash ssh localhost ``` 若提示输入密码或密钥,则说明 SSH 服务已正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值