SSH軟件包:Sftp,scp和ssh-agent

這篇文章的中心是介紹在ssh軟件包中非常有用的程序如:sftp,scp,ssh-agent,和ssh-add。

  在下文中我們假設sshd2守護進程很好地被設置并且運行良好。

  Sftp和scp總覽

  讓我們把注意力集中到sftp和scp上。

  第一個(sftp安全文件傳輸)是一個類ftp的客戶端程序,它能夠被用來在網絡中傳輸文件。

  它并不使用FTP守護進程(ftpd或wu-ftpd)來進行連接,而是有意義地增強系統的安全性。

  實際上,通過監視一些系統中的log文件,我們可以注意到最近一個月中有80%的攻擊是針對于ftpd守護進程的。

  sftp避免了這些攻擊從而可以停止在wu-ftpd上潛在的危險。

  第二個(scp安全性復制)被用來在網絡上安全地復制文件。它替代了不安全的rcp命令。

  Sftp和scp從連接到sshd服務器上后,不需要任何專用的守護進程。為了使用sftp和scp你必須插入以下兩行在配置文件/etc/ssh2/sshd2_config中:

  subsystem-sftp sftp-server

  在這些修改之后,你必須重新啟動sshd.

  然后你就可以使用sftp和scp連接到運行sshd的主機上了。

  Sftp

  Sftp使用在數據連接上使用ssh2,所以文件的傳輸是盡可能地安全。

  使用sftp代替ftp兩個主要的的原因是:

  1、Password從不用明文傳輸,防止sniffer(嗅探器)的攻擊。

  2、數據在傳輸時被加密,使用刺探和修改連接非常困難。

  而使用sftp2是非常簡單的。讓我們假設你使用了你的帳戶:myname通過sftp連按上了主機host1。

  可以使用命令:

  sftp myname@host1

  一些選項能夠在命令行中被指定(詳細情況請查看sftp manul)

  當sftp2準備好了來接受連接時,它將顯示一個狀態提示符 sftp>。在sftp手冊中有完整的用戶可以使用的命令列表;其中有:

  ·quit:

  從這個應用程序中退出。

  ·cd directory:

  改變當前的遠程工作目錄。

  ·lcd directory:

  改變當前的本地工作目錄。

  ·ls [ -R ] [ -l ] [ file ... ]:

  列出在遠地服務器上的文件名。如果是目錄,則列出目錄的內容。當命令行中指定了-R,則遞歸地顯示目錄樹。

  (默認情況下,子目錄并不被訪問)。當命令行中指定了-l,文件與目錄的權限,屬主,大小和修改時間被列出。

  當沒有參數被指定,則.(當前目錄)的內容被列出。普通情況下選項-R和-l是互相不兼容的。

  ·lls [ -R ] [ -l ] [ file ... ]:

  與ls一樣,但是是對于本地文件操作。

  ·get [file ...]:

  從遠程端傳送指定的文件到本地端。目錄內容被遞歸地復制。

  ·put [ file ... ]:

  從本地端傳送指定的文件到遠地端。目錄內容被遞歸地復制。

  ·mkdir dir (rmdir dir):

  嘗試建立或刪除參數中指定的目錄。

  通配符對于ls,lls,get和put是支持的。格式在sshregex手冊中有描述。

  從sftp使用加密技術以來,一直有一個障礙:連接速度慢(以我的經驗有2-3倍),但是這一點對于非常好的安全性來講只能放在一邊了。在一個測試中,在我們局域網上的Sniffer可以在一個小時中捉住ftp連接上的4個password.

  sftp的使用可以從網絡上傳送文件并且除去這些安全問題。

  Scp

  Scp2(安全性復制)被用來從網絡上安全地復制文件。它使用ssh2來進行數據傳送:它使用的確認方式和提供的安全性與ssh2一樣。

  這可能是一種最簡單的方法從遠地機器上復制文件了。讓我們假設你要使用你的帳戶mmyname,復制在local_dir目錄中的filename

  文件到遠地的主機host1上的remote_dir目錄中。使用scp你可以輸入:

  scp local_dir/filename myname@host1:remote_dir

  在這種方式下文件filename被復制成相同的名字。通配符可以使用(讀一讀sshregex手冊)。命令行:

  scp local_dir/* myname@host1:remote_dir

  從目錄local_dir復制所有文件到主機host1的目錄remote_dir命令:

  scp myname@host1:remote_dir/filename .

  復制文件filename從host1的目錄remote_dir到本地目錄。

  scp支持許多選項并且允許在兩個遠地系統之間復制文件:

  scp myname@host1:remote_dir/filename myname@host2:another_dir

  詳情請查閱手冊

  顯然,使用scp,你必須知道遠程機器的確切目錄,所以在實際上sftp經常被作為首選使用。

  ssh 密鑰管理

  ssh軟件包包含兩個非常有用的程序來管理確認密鑰,允許用戶連接到一個遠程系統而無須指定password。這些程序是ssh-agent和ssh-add。

  ssh-agent

  從ssh-agent我們可以讀到:“ssh-agent2是一個保持確認私有密鑰的程序。ssh-agent2在X對話或login對話的開端被啟動,并且所有的其它窗口或程序以ssh-agent2程序的子程序的形式被啟動。程序在代理從另一個代理繼承一個連接時被啟動,并且,當登錄到其它機器使用 ssh時,這個代理被自動地使用到公共密鑰確認中。”

  根據你使用xdm的與否,有兩種不同的使用ssh-agent的方法。

  如果使用xdm,你需要編輯 .xsession文件,在$HOME目錄中。有兩種可能的過程:

  復制 .xsession到.xsession-stuff并且修改.xession:

  exec ssh-agent ./.xsession-stuff

  或者你需要編輯.xsession文件并且搜索每一行表達式包含"exec program"。修改成exec ssh-agent program。

  然后退出并重新啟動。ssh-agent將把X-session作為它的一個子進程啟動,并且等待ssh密鑰插入到它的數據庫中。

  如果xdm不被使用,那么ssh-agent的使用是非常簡單的,因為你可以啟動你的X使用以下命令:

  ssh-agent startx

  這樣就可以運行ssh-agent了。

  ssh-add

  每當ssh-agent正常運行了,你可以在它的數據庫中使用命令ssh-add加入新的身份信息。你只可以加入某些個祖先ssh-agent的子進程的身份信息,否則將會出錯:

  Failed to connect to authentication agent - agent not running?

  使用ssh-add是非常簡單的:從命令行輸入:

  ssh-add

  ssh-add掃描文件$home/.ssh2/身份信息,它包含了私人的密鑰。如果這個文件不存在,則設定一般情況下的私人信息文件(如:$HOME/.ssh2/id_dsa_1024_a)。

  如果一個公共密鑰文件需要一個暗號,ssh-add會詢問這個暗號:

  Adding identity: /home/matt/.ssh2/id_dsa_1024_a.pub

  Need passphrase for /home/matt/.ssh2/id_dsa_1024_a (..)

  Enter passphrase:

  你可以從agent那兒獲得所有的帳戶身份通過命令ssh-add -l:

  Listing identities.

  The authorization agent has one key:

  id_dsa_1024_a: 1024-bit dsa, (...)

  結論和一些有用的鏈接

  許多telnet,rlogin,ftp的用戶可以沒有認識到它們的password在網絡傳送過程中是沒有被加密的,但是,使用一些安全的協議可以保證在不安全的網絡上的傳輸安全。SSH,對于所有的傳輸都加了密,有效地防止了偷聽,搶劫連接和其它網絡攻擊。

  這些文章只是介紹ssh軟件包的,可以在ssh,sshd和sftp的手冊中找到更多有用的東西。你可以從http://www.ssh.com/products/ssh/得到ssh軟件包(LinuxByte注:本站下載SSH2),你可以從http://www.ssh.com/tech/中得到更多的SSH的技術內容和加密技術。你也可以從http://www.openssh.com/得到openssh的SSH協議訴可執行文件。輕便版本在http://www.openssh.com/portable.html.你也可以從http://www.openssh.com/faq.html得到SSH的FAQ。

本文來自:http://doc.linuxpk.com/4213.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535681.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA并發篇_公平鎖與非公平鎖

簡單的來說,如果一個線程組里,能保證每個線程都能拿到鎖,那么這個鎖就是公平鎖。相反,如果保證不了每個線程都能拿到鎖,也就是存在有線程餓死,那么這個鎖就是非公平鎖。 一、引入概念 1、公平鎖&#xff1…

Java并發篇_進程線程

一個進程包括由操作系統分配的內存空間,包含一個或多個線程。一個線程不能獨立的存在,它必須是進程的一部分。一個進程一直運行,直到所有的非守護線程都結束運行后才能結束。 多線程能滿足程序員編寫高效率的程序來達到充分利用 CPU 的目的。…

Real提示“作為受限用戶,您無足夠的windows操作權限”的解決辦法

運行Regedit.exe,翻到HKEY_CLASSES_ROOT/Software,刪除Software;然后關閉注冊表,再運行Regedit.exe,翻到HKEY_CLASSES_ROOT/Software,點右鍵選擇“權限”,各個組都設置為“完全控制”和“讀取”…

Java并發篇_線程詳解

線程(thread) 是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。 一、線程的…

修改MYSQL最大連接數的3種方法

MYSQL數據庫安裝完成后,默認最大連接數是100,一般流量稍微大一點的論壇或網站這個連接數是遠遠不夠的,增加默認MYSQL連接數的方法有兩個 方法一:進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections100 …

可擴展的編程語言——Scala

一、Scala是什么 Scala是一種多范式的編程語言,其設計的初衷是要集成面向對象編程和函數式編程的各種特性。Scala運行于Java平臺(Java虛擬機),并兼容現有的Java程序。 ? Scala語言的名稱來自于"可伸展的語言"。之所以…

ubuntu7.10 apache+php+mysql配置

本篇文章 經過許多次的測試和修改已經完成了在Ubuntu7.10 下 安裝配置 ApachePHPMySQL的所有的工作. 1、在Ubuntu7.10 下安裝 Apache2PHP5MySQL sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin在下載來自動安裝配置的時候…

Spark-大規模數據處理計算引擎

官網:http://spark.apache.org 一、Spark是什么 Spark是一種快速、通用、可擴展的大數據分析引擎,2009年誕生于加州大學伯克利分校AMPLab,2010年開源,2013年6月成為Apache孵化項目,2014年2月成為Apache頂級項目。項目是…

MySQL Replace INTO的使用

REPLACE的運行與INSERT很相像。只有一點除外,如果表中的一個舊記錄與一個用于PRIMARY KEY或一個UNIQUE索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。請參見13.2.4節,“INSERT語法”。 注意,除非表有…

CentOS7下Spark集群的安裝

從物理部署層面上來看,Spark主要分為兩種類型的節點,Master節點和Worker節點,Master節點主要運行集群管理器的中心化部分,所承載的作用是分配Application到Worker節點,維護Worker節點,Driver,Ap…

Scala中class與object區別

calss scala編譯器會字段幫我們生產一個私有字段和2個公有方法get和set scala 中沒有 static 關鍵字,所以 對于一個class來說,所有的方法和成員變量在實例被 new 出來之前都是無法訪問的 因此在class中的main方法沒什么用了 scala 的object 中所有成員…

如何編寫一個shell腳本

本文結合大量實例闡述如何編寫一個shell腳本。 為什么要進行shell編程 在Linux系統中,雖然有各種各樣的圖形化接口工具,但是sell仍然是一個非常靈活的工具。Shell不僅僅是命令的收集,而且是一門非常棒的編程語言。您可以通過使用shell使大量的…

Scala變量和常用數據類型

一、 聲明值和變量 Scala聲明變量有兩種方式,一個用val,一個用var。 聲明方式:val / var 變量名 : 變量類型 變量值 val定義的值是不可變的,它不是一個常量,是不可變量,或稱之為只讀變量。 val示例&am…

ubuntu7.10下的vi用的怪怪的

到網上查了一下,原來是ubuntu7.10默認安裝的是vim-tiny.可以重新安裝vim-full #dpkg -l 如果是vim-tiny #apt-get install vim-full

(轉)JVM監控工具介紹

2008年03月04日 16:57原作者: stone2083 原文地址:http://www.blogjava.net/stone2083/archive/2008/02/25/182081.htmljstatd啟動jvm監控服務。它是一個基于rmi的應用,向遠程機器提供本機jvm應用程序的信息。默認端口1099。實例:…

Scala的控制結構

一、 if else表達式 scala中沒有三目運算符,因為根本不需要。scala中if else表達式是有返回值的,如果if或者else返回的類型不一樣,就返回Any類型(所有類型的公共超類型)。 例如:if else返回類型一樣 scal…

【Kubernetes】控制器Statefulset

Statefulset控制器 一、概念二、Statefulset資源清單文件編寫技巧2.1、查看定義Statefulset資源需要的字段2.2、查看statefulset.spec字段如何定義2.3、查看statefulset的spec.template字段如何定義 三、Statefulset使用案例:部署web站點3.1、編寫一個Statefulset資…

Scala 函數

scala定義函數的標準格式為: def 函數名(參數名1: 參數類型1, 參數名2: 參數類型2) : 返回類型 {函數體} 函數示例1:返回Unit類型的函數 def shout1(content: String) : Unit {println(content) }函數示例2:返回Unit類型的函數&#xff0…

ubuntu7.10中的apache的一些設置

在/etc/apache2/mods-available目錄下是apache2可用的模塊.出現在這里的模塊不代表你可以用.只是表明你的apache2已經安裝了這些模塊.可用的模塊在/etc/apache2/mods-enabled這個目錄下.(從redhat系列轉過來看ubuntu,雖然感覺不習慣,但覺得ubuntu的這種分目錄的方法很不錯.) 如…

Java并發篇_Java內存模型

在并發編程中,我們通常會遇到以下三個問題:原子性問題,可見性問題,有序性問題。那么它們產生的原因和在Java中解決的辦法又是什么呢? 一、內存模型的相關概念 ? 計算機在執行程序時,每條指令都是在CPU中執…