ubuntu配置ssh

ssh  [email protected](ip地址)

1、目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;

[email protected]:~$ ps -ef|grep sshd

root      2859     1  020:29 ?        00:00:00 /usr/sbin/sshd -D

root      2901  2859  020:31 ?        00:00:00 sshd: june[priv]

june      2971  2901  020:31 ?        00:00:00 sshd:[email protected]/1

[email protected]:~$

其中/usr/sbin/sshd为ssh clinet/server中server端的守护进程,如果上述结果中没有sshd出现,那么可能就是你的server端程序没有安装(Ubuntu 11.04 默认没有安装ssh server,只安装了ssh client),或者sshd服务没有启动,这两者的解决办法请见下文详述。

2、是否允许该用户登录;

3、本机是否设置了iptables规则,禁止了ssh的连入/连出;

检查方法:

[email protected]:~$sudo  iptables -L

[sudo] password for june:

Chain INPUT (policy ACCEPT)

target    prot opt source               destination

ACCEPT    tcp  --  anywhere             anywhere            tcp dpt:ssh 

Chain FORWARD (policy ACCEPT)

target    prot opt source              destination

Chain OUTPUT (policy ACCEPT)

target    prot opt source              destination

[email protected]:~$

5.配置防火墙

本系列的上一篇文章中我们简介了IPTables的工作方式,在本次介绍中我们将通过实例来向大家演示如何在Ubuntu 14.04中配置IPTables的规则。

IPTables基本命令

在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。

首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用su或sudo -i取得root Shell。下面的内容中我们都使用sudo,这也是Ubuntu系统上的首选方法。

最好的起点就是先通过“-L”参数来查看下当前系统的所有IPTables规则:

sudo iptables -L

我们可以看到Linux中都有的3个常用默认链(INPUT、OUTPUT和FORWARD),同时也可以看到每个链的缺省策略(每个链对默认策略都是接受),在此我们可以看到Ubuntu中并没有添加任何默认规则集。

如果你希望通过命令来查看每个链的默认规则,可以使用“-S”参数:

sudo iptables -S

如果你看到IPTables里面已经有规则了,并希望取消这些规则后重新更配置话,可以使用“-F”参数来清空已有的规则集:

sudo iptables -F

虽然“-F”参数可以清空并刷新链中所有的现有规则集,但并不会对链的默认策略进行更改。因此,如果你是在更改远程VPS防火墙策略的话需要在“-F”清空所有规则时先将INPUT和OUTPUT链的默认策略恢复到ACCEPT,以免规则清空后SSH连接被阻断。要做到这一点可执行如下命令:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

在配置好允许SSH连接后(下面介绍),再将INPUT和OUTPUT链的默认规则更改为DROP即可。

创建自已的IPTables规则

现在就要开始为我们的VPS创建自定义的防火墙规则啦,正如上篇文章中所说,由于INPUT链会处理所有连接到服务器的入站数据包,因此我们的所有操作都与INPUT链有关。现在先来配置服务器允许SSH连接。

完整命令应该是这样的:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

大多朋友可能会觉得看起来怎么这么复杂,那我们来逐一分拆说明下。

  • -A INPUT :表明我们要将此规则追加到某个链的最后,由于我们要操作INPUT链接,所以这么写。
  • -m conntrack :iptables除了自己的核心功能外还只有一些实用的扩展和模块,这个参数表明添加conntrack模块提供的能力。(conntrack模块可以根据先前的连接来确定数据包之间的关系)
  • –ctstate :该参数是conntrack模块提供的,它可以确定如何用现在的数据包去匹配先前获得的数据包。ESTABLISHED值将自动允许现有连接的数据包,RELATED值将允许已建立连接的相关数据包。(这样就与SSH会话特性相匹配上了)
  • -j ACCEPT :这个参数用于指定匹配的数据包的目标。用在这里表示接受和允许符合上述标准的数据包通过。

配置好后我们来看一下:

sudo iptables -L

现在,你应该已经知道IPTables的基本语法了,下面我们继续添加规则打怪,以期尽快升级为高手。

接受其它必要连接

大家的VPS上一般SSH服务的22端口,Web服务器的80端口及Mysql的3306端口都是需要打开的,不然怎么对外提供服务呢。因此我们也需要通过如下命令在IPTables中打开这些端口:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

为了保证我们的VPS能够正常运行,还需要添加一条允许规则。通常,计算机上的服务都会发送网络数据包以保持彼此之间的通信。而这种通信会利用到一个名叫loopback的伪网卡将流量引导回自己。因此,我们还需要为loopback网卡添加一条允许规则。

sudo iptables -I INPUT 1 -i lo -j ACCEPT
  • -I INPUT 1 :与“-A”不同,它可以指定要将规则添加到该链的位置。

实施Drop规则

前面讲的内容其实都是基于一个前提假设的,但事先我们需要先把防火墙的2种常用模式说明一下。一种是明确定义允许通过防火墙的规则,不匹配的都丢弃。另外一种是明确定义拒绝通过防火墙的规则,其余的都允许。我们的前提假设采用的就是第一种方式,这样配置起来相对简单,规则也较少,也更加安全。

前面我们已经为INPUT链接定义了一些允许规则,但默认INPUT链是允许所有包,所以我们现在需要将INPUT链的默认规则更改为“Drop”即丢弃。通过如下命令完成更改:

sudo iptables -P INPUT DROP

查看和保存配置

IPTables的配置是立即生效的,前面已经介绍过,在配置好之后我们可以直接用“-L”参数进行查看,这里再另外增加一个“–line-numbers”参数,它主要用于显示行数,对于规则较多时的查看非常方便。

sudo iptables -L --line-numbers

虽然IPTables的命令执行后会立即生效,但这个生效过程其实是临时的,系统在重启之后便会丢失。因此,我们还需要将这些配置添加到配置文件当中,以保证系统在下次重启后会自动载入我们的IPTables防火墙规则。

sudo apt-get update
sudo apt-get install iptables-persistent

该命令脚本下载执行后会询问我们是否对IPTables配置进行保存,如果确定的话选择“是”即可。保存后下次重启系统也不会造成配置丢失了。

时间: 2024-10-09 10:06:17

ubuntu配置ssh的相关文章

ubuntu配置SSH免密码登陆

ubuntu配置SSH免密码登陆 1.安装SSH:  2.是否生成 .ssh 目录: 3.如果没有生成,自己手动创建一个  .ssh 目录: 生成的 .ssh 目录: 4.生成公钥与私钥: 效果如下: 5.将公钥加入到用于认证的公钥文件中: 6.免密码登陆: 效果: Ubuntu 免密码登陆,SSH配置完.

linux - ubuntu 配置 ssh

1.安装Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可.安装ssh-serversudo apt-get install openssh-server安装ssh-clientsudo apt-get install openssh-client 2.确认sshserver是否安装好ps -e | grep sshd  450 ?        00:00:00 sshd 如果看到sshd那说明ssh-server已

远程连接linux(Ubuntu配置SSH服务)22端口

最近在虚拟机安装了Ubuntu 14.04 server版,安装过程中选择安装OpenSSH client客户端,服务器端缺省是没有安装的.在Windows7客户机使用Xshell工具远程连接Ubuntu server,提示22端口连接失败:cmd窗口telnet 22端口也连接失败,原来是22端口未打开造成的. 打开Ubuntu SSH 22端口的方法如下: 需要安装OpenSSH server 使用命令安装: $sudo apt-get install openssh-server 需要保证

Ubuntu配置ssh服务

Ubuntu系统必须开启ssh服务后,windows系统或者其他的主机才可以远程登陆到Ubuntu系统. 1,安装软件包,执行sudo apt-get install openssh-server Ubuntu缺省安装了openssh-client,如果你的系统没有安装的话,再用apt-get install openssh-client安装上即可. 2,然后确认sshserver是否启动,执行ps -e |grep ssh 如果只有ssh-agent那ssh-server还没有启动,如果看到s

Ubuntu配置SSH服务器

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题. SSH分为客户端和服务端. 服务端是一个守护进程,一般是sshd进程,在后台运行并响应来自客户端的请求.提供了对远程请求的处理,一般包括公共密钥认证.密钥交换.对称密钥加密和非安全连接. 环境:W

ubuntu配置ssh连接方式

pgadmin4 配置界面的password指的是数据库用户的密码, 不是服务器的密码. pg数据库 1.确保远程服务器开放相应端口.这个是在防火墙设置. 2.pg数据库服务器允许外部ip访问, 默认是只允许localhost. 通过修改postgresql.conf实现 3.配置用户访问权限,修改pg_hba.conf文件实现. 路径在/etc/postgresql/9.3/main/然后重启/etc/init.d/postgresql restart 1.修改postgresql.conf文

Ubuntu安装SSH + Windows上配置Putty

1. Ubuntu安装SSH 命令: # sudo apt-get install openssh-server 2. 启动SSH Server 命令: # sudo /etc/init.d/ssh start 3. 在控制端(安装putty的一侧,Windows或其他Linux OS)安装和配置putty 3.1 下载安装putty 官方主页: http://www.putty.org/ 下载页面: http://www.chiark.greenend.org.uk/~sgtatham/put

Ubuntu Server 14.04 配置ssh登录

Linux服务器限制ssh登录,查看登录日志 1.查看端口占用情况 $sudo su #lsof -i:<NUM> netstat -apn | grep <NUM> 2.修改默认端口号22 /etc/ssh/sshd_config Port 22 最好先添加一个端口号,然后启用成功之后再关闭端口22. 然后重启sshd: sudo /etc/init.d/ssh restart 没有反应,使用 # service sshd restart 提示 sshd:unrecognized

ubuntu 设置ssh 登陆

今天老板过来与我商量实验室买小型服务器的事情.老板咨询了华科的一个老师之后对买小型服务器有点犹豫.我和老板都没接触过小型服务器,而且据说服务器对散热和湿度都有要求,我们实验室本来空间就很紧张,确实没有太大的地方安置新来的服务器了. 老板担心我一个人搞不定服务器的维护,我自己心里也没有主意.后来我去咨询了院里面其他做生物信息学分析的实验室,好像他们也不是很在行.楼上付老师实验室的同学告诉我,他们用一个性能和配置好一点的主机代替了.我自己现在用的这台电脑是老板自己配的.老板自己对电脑挺在行的,这台电