linux
在Linux系统下使用SSH实现端口映射的方法?
一、在Linux系统下使用SSH实现端口映射的方法?
从技术角度来分析,几个要求:
1、从安全方面看,sftp会更安全一点
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh4.8p1以后都支持chroot,我现在用的是centos6.3,自带的openssh已经是5.3p1,足够了。
可以输入:
#ssh-v
来查看openssh的版本,如果低于4.8p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
#groupaddsftp
2、创建一个sftp用户,名为mysftp
#useradd-gsftp-s/bin/falsemysftp
#passwdmysftp
3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
#mkdir-p/data/sftp/mysftp
#usermod-d/data/sftp/mysftpmysftp
4、配置sshd_config
编辑/etc/ssh/sshd_config
#vim+132/etc/ssh/sshd_config
找到如下这行,并注释掉
subsystemsftp/usr/libexec/openssh/sftp-server
添加如下几行
subsystemsftpinternal-sftp
matchgroupsftp
chrootdirectory/data/sftp/%u
forcecommandinternal-sftp
allowtcpforwardingno
x11forwardingno
解释一下添加的几行的意思
subsystemsftpinternal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
matchgroupsftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
当然,也可以匹配用户
matchusermysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
chrootdirectory/data/sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
forcecommandinternal-sftp
指定sftp命令
allowtcpforwardingno
x11forwardingno
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定chroot目录权限
#chownroot:sftp/data/sftp/mysftp
#chmod755/data/sftp/mysftp
错误的目录权限设定会导致在log中出现”fatal:badownershipormodesforchrootdirectoryxxxxxx”的内容
目录的权限设定有两个要点:
1、由chrootdirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由chrootdirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp
2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立sftp用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
#mkdir/data/sftp/mysftp/upload
#chownmysftp:sftp/data/sftp/mysftp/upload
#chmod755/data/sftp/mysftp/upload
7、重启sshd服务
#servicesshdrestart
到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。
如果还是不能在此目录下上传文件,提示没有权限,检查selinux是否关闭,可以使用如下指令关闭selinux
修改/etc/selinux/config文件中的selinux=""为disabled,然后重启。或者
#setenforce0
二、Windows下连接Linux的ssh工具有哪些?
Windows下连接Linux的ssh工具有putty、Bitvise SSH Client、MobaXterm、DameWare SSH、marTTY、Cygwin可以根据需求和喜好来选择;
Putty是最有名的SSH和telnet客户端,由Simon Tatham为Windows平台开发。Putty是一款开源软件,提供可用的源代码并有一批志愿者进行开发和支持。
Putty易于安装和使用,通常大部分的配置选项不需要修改。用户只需要输入少量基本的参数,可以开始很简单地建立连接会话。
Bitvise SSH Client:Bitvise SSH是一款支持SSH和SFTP的Windows客户端。由Bitvise开发和提供专业支持。这款软件工具性能突出,易于安装、便于使用。Bitvise SSH客户端拥有功能丰富的图形界面,通过自动重连功能的内置代理进行动态端口转发。
据了解,Bitvise SSH客户端对个人用户使用是免费的,同时对于在内部的个人商业使用同样免费。
MobaXterm是远程计算的工具箱。在 单独一个Windows应用里,MobaXterm为程序员、网站管理员、IT管理员及其它用户提供了远程操作一揽子功能。
另外,MobaXterm提供了所有重要的远程网络工具(如SSH、X11、RDP、VNC、FTP、MOSH等),以及Windows 桌面上的Unix命令(bash、ls、cat、sed、grep、awk、rsync等),这些均是由一个开箱即用的单一的便携可执行文件提供,并对个人使用免费。
DameWare SSH是的免费SSH客户端。该免费工具是一个终端模拟器,可以从一个易用的控制台建立多个telnet和SSH连接。
将常用的会话保存在 Windows 文件系统中,使用多套保存的证书来轻松登录不同的设备,使用telnet、SSH1和SSH2协议连接计算机和设备
SmarTTY是一款免费的多标签SSH客户端,支持使用SCP命令随时复制文件和目录。
SSH服务器每个连接支持最多10个子会话
.SmarTTY
在做得:没有多个窗口,不需要重新登录,仅打开一个新的标签页可以。Cygwin 是一款GNU和开源工具的集合,提供类似一个Windows平台下Linux的功能。
Cygwin包括一个称为模拟库的Unix系统:
cygwin.dll
,集成大量GNU和其它免费软件。在安装包中,有高质量的编译器和其他软件开发工具、一个X11服务器、一套完整的X11开发套件、GNU emacs编辑器、Tex和LaTeX、openSSH(客户端和服务器),此外还包括在Windows下需要编译和使用PhysioToolkit软件的所有。三、linux如何修改默认SSH端口?
ssh 服务器软件配置文件在 /etc/ssh/ 目录下 步骤如下1.进入到此目录# cd /etc/ssh2.编辑其配置文件sshd_config # vim sshd_config3.在里边找到一行 #Port 22 此行很靠前,几乎就在文件的开头处不远,将此行的#号去掉然后就是后边加你想要改成为的端口号 我这里就改成了2343Port 23434.重新启动 sshd服务# servicd sshd restart5.到此ssh端口更改为2343注意连接ssh时要相应更改端口号如 ssh 192.168.11.122 2343
四、如何配置ssh客户端,怎么ssh连接Linux服务器?
在Linuxe服务器上开启远程和端口。内网的话直接用地址加端口即可连接。 外网需要做端口映射。
1.开启ssh(secure shell)服务(我的是linux ubuntu 10.10),当然在开启ssh服务之前,需要下载相关得软件,使用下面得命令即可: sudo apt-get install ssh 然后进入/etc/init.d 输入命令:sudo service ssh start 开启ssh服务 使用 netstat -tln 查看ssh服务是否已经打开(ssh 服务默认使用22端口) 若要关闭ssh服务时,使用 : sudo service ssh stop即可关闭ssh 服务
2.在客户端(widnows主机)上下载ssh客户端putty,填写linux服务器ip,session name 然后保存,打开,输入用户名,和密码,那么就登录成功了
五、怎样在线编辑linux服务器上的文件?
用ssh远程登录到Linux服务器,登录成功后会获得一个远程终端,在终端在可以执行编辑文件的命令,一般是用vim命令编辑文件,Linux服务器在线编辑就是这样操作。
六、Linux的ssh能用普通账户启动么?
是的,Linux的ssh可以使用普通账户启动。SSH是一种远程连接协议,可以通过SSH客户端连接到Linux服务器,使用普通账户进行远程登录。在Linux系统中,每个账户都有相应的权限,普通账户可以执行一些基本操作,如查看文件、创建文件夹、修改文件等。如果需要执行更高级的操作,需要使用具有管理员权限的特殊账户。因此,对于普通用户来说,使用SSH进行远程登录是非常方便和实用的。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...