有关SSH的初学者后端Web编程问题

时间:2011-02-10 06:01:26

标签: networking ssh client-server

所以,我参加了一些编程课程(面向对象的,网络),但从来没有“动手”的项目,而是在编码之外。

现在我想弄清楚这些SSH的内容是什么,我甚至无法弄清楚要使用哪个客户端,所以现在选择filezilla。

我的问题是,我在哪里可以阅读更多关于这些术语的信息,比如端口和诸如此类的东西,所以我不会漫无目的地学习。

谢谢!

5 个答案:

答案 0 :(得分:6)

基本上,SSH是一种通过Internet命令另一台计算机的方法。您可以执行远程系统的任何推荐,并且您的用户有权限。

互联网

Internet运行在一系列名为TCP / IP的协议上。 TCP / IP定义了一种查找和寻址单个计算机(IP)的方法以及它们之间的通信方式(TCP)。

您可以将互联网上的计算机视为一大堆办公楼。每个办公室具有完全相同的窗口数:65535。办公室(计算机)通过在窗口(端口)之间串联通道进行通信。每个通道都有两个端点,称为套接字。每个套接字与相应计算机上的端口相关联。我们来回发送数据,然后关闭连接。

客户机/服务器

Internet上有两种类型的计算机:客户端和服务器。客户端请求信息,服务器提供信息。端口1-1024保留给服务器,每个协议1个端口。完整列表为here,如您所见,它并非没有争用。

假设您访问了一个网站

您的浏览器(客户端程序)看到您键入“stackoverflow.com”,并使用DNS发现stackoverflow.com是计算机编号64.34.119.12。这是它的IP地址。它允许您的计算机查找stackoverflow.com所在的网络,路由到它,并建立与Stack Overflow Web服务器的连接。 Web服务器是一个接受来自您的浏览器的客户端请求的程序。

他们使用称为HTTP的协议发言 - 它允许您的浏览器请求由URL确定的页面。服务器查看请求,运行程序以构建网页(或检索HTML文件,图像或任何其他文件),并将结果发送回浏览器。端口80已为HTTP保留。这意味着,您的计算机会选择一个随机端口进行连接,并在服务器上选择connects to端口#80。

Unix和shell

大多数Web(Internet,even)都运行在一个名为Linux(Unix变体)的操作系统上,而不是像Windows那样的操作系统。 Unix系统拥有一个命令行界面,运行一个名为“shell”的程序,它是系统的直接接口。 shell接受输入,一次接受一个命令。你键入文本,它会吐出命令的输出。

Secure Shell

SSH允许您安全地执行此操作。使用经过充分研究的已发布的“公钥”加密系统对所有数据流量进行加密。 (事实上​​,在支持加密方案中发现漏洞时,这是主要新闻,请参阅these advisories)。

SSH是通常在端口22上运行的协议。任何在Internet上(不在防火墙后面)的计算机都可以运行SSH服务器,并允许用户连接到它并执行命令。

在服务器上使用Unix的大多数系统管理员和软件开发人员使用SSH来配置,控制和上传程序到该服务器(位于某个数据中心的某个地方)。

更多

所有这些都有很多细节。上面的任何术语或首字母缩略词都可以输入维基百科,以获得非常全面的信息。有很多关于Unix,网络和Web编程的书籍。

答案 1 :(得分:1)

SSH最初是telnet的安全替代品。对SSH的需求源于telnet不支持加密这一事实,因此网络上的所有内容(命令,输出和密码)都清晰可见,供所有人查看。

因为在开始时SSH加密(基于密钥交换)应该是强大的(并且它确实是一个显着的改进),并且是开源的,它迅速起飞并且添加了对协议的若干扩展,特别是在远程文件管理和转移的域。 此外,SSH还用于调整和端口转发配置。

在文件复制领域,有几个选项。

  1. SCP:cp(副本)。灵感来自rcp,是ssh的早期文件传输扩展。
  2. SFTP:SSH文件传输协议,一种较新的SSH扩展,支持文件复制和浏览(但不是真的像带有2个端口的FTP)。它比scp和ftp都更丰富。可以将其视为远程文件系统协议(但是,它比scp稍慢)。
  3. FTPS:FTP over TLS / SSL。需要2个端口,如ftp,一个用于命令,一个用于数据。两个连接都可以加密。
  4. 安全FTP。真正的FTP通过SSH进行管理。
  5. 您需要连接的站点可能提供SFTP。您只需要在Filezilla站点管理器中声明远程服务器连接配置。您需要提供服务器IP地址或名称,SSH服务器端口,通常是22但是还有其他可能性(您应该已经提供了此信息)并选择sftp作为服务器类型)。建立连接后,接受公钥,应该是公钥。

    然后,您可以将您的开发人员放在远程服务器上。

答案 2 :(得分:1)

操作系统选择
您应首先在2个世界(MS或Linux)之间做出选择。 前提是Linux社区在某种程度上不太愿意分享解释。此外,您可以通过选择一个或另一个来减少时间,避免两次怀疑相同的问题,根据您选择的操作系统,答案不同。

我经历过两种情况,开始在MS世界中寻找解决方案,我知道。大错,丢失时间。然后我太晚了,改变了Linux世界。所以我建议直接进入linux操作系统学习。真的很多发行版。我会建议Debian(开放,用户友好,简单,安全,庞大的社区),但你会收到尽可能多的建议。

操作系统理解
http://www.linuxfromscratch.org/lfs/
http://www.ibm.com/developerworks/library/l-bash.html
http://tldp.org/LDP/abs/html/

关于SSH的具体问题
它取决于您将选择的系统,但您可以轻松构建一个小型客户端和一个小型服务器,然后配置它们并使用ssh。如果您愿意,您的2台服务器甚至可以在本地托管在同一台机器上。然后,您将学习如何设置ssh-client端(通常称为ssh_config)和ssh服务器端(通常名为sshd_config,其中“d”代表守护进程)。

在这里你可以找到关于两个世界的ssh的解释:
http://support.suso.com/supki/SSH_Tutorial_for_Linux

谷歌搜索的一些关键字
List_of_TCP_and_UDP_port_numbers
ssh-keygen:加密密钥(私有/公共),
ssh-add ssh agent
Gentoo钥匙串

以及稍后但如果您自行管理服务器 两个主要的:
1)iptables
您可以从this开始,然后继续that one

2)fail2ban
这是一个补充工具,您可以轻松找到大量的文档 ...

玩得开心: - )

编辑:您可以使用虚拟化(virtualbox,vm-ware ...)轻松体验托管在Windows操作系统中的Linux计算机。这是一个安全的开始,并为这次投资提供了良好的回报。它允许您在高清房间的范围内托管尽可能多的机器(例如一个Linux服务器和一个Linux客户端)。

答案 3 :(得分:0)

我假设你需要学习shell脚本。我推荐this book Filezilla是一个FTP客户端。尝试Putty - 免费SSH客户端。当然,你需要Linux服务器。

答案 4 :(得分:0)

如果你想深入了解SSH,我可以建议你这本书 SSH:安全外壳权威指南

有关详细信息,请参阅此处:http://www.snailbook.com/

我读过这本书并且学到了很多东西。它教你们所有关于设置服务器,客户端,密钥代理和各种(实际)应用程序的知识。