A. 怎樣對ssh框架結構的編譯之後的.class進行混淆處理,防止反編譯。
下面是我從論壇上靠過來的 希望對你有幫助
常用的保護技術
由於Java位元組碼的抽象級別較高,因此它們較容易被反編譯。本節介紹了幾種常用的方法,用於保護Java位元組碼不被反編譯。通常,這些方法不能夠絕對防止程序被反編譯,而是加大反編譯的難度而已,因為這些方法都有自己的使用環境和弱點。
隔離Java程序
最簡單的方法就是讓用戶不能夠訪問到Java
Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java
Class放在伺服器端,客戶端通過訪問伺服器的相關介面來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通
過介面提供服務的標准和協議也越來越多,例如 HTTP、Web
Service、RPC等。但是有很多應用都不適合這種保護方式,例如對於單機運行的程序就無法隔離Java程序。這種保護方式見圖1所示。
圖1隔離Java程序示意圖
對Class文件進行加密
為了防止Class文件被直接反編譯,許多開發人員將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而後再將這些類裝載到JVM當中。這些類的解密可以由硬體完成,也可以使用軟體完成。
在實現時,開發人員往往通過自定義ClassLoader類來完成加密類的裝載(注意由於安全性的原因,Applet不能夠支持自定義的
ClassLoader)。自定義的ClassLoader首先找到加密的類,而後進行解密,最後將解密後的類裝載到JVM當中。在這種保護方式中,自定
義的ClassLoader是非常關鍵的類。由於它本身不是被加密的,因此它可能成為黑客最先攻擊的目標。如果相關的解密密鑰和演算法被攻克,那麼被加密的
類也很容易被解密。這種保護方式示意圖見圖2。
圖2 對Class文件進行加密示意圖
轉換成本地代碼
將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。
當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平台特性。對於不同的平台,我們需要維護不同版本的本地代碼,這將加重軟體支持和維護的工作。不過對於一些關鍵的模塊,有時這種方案往往是必要的。
為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法。這種保護方式示意圖見圖3。
代碼混淆
圖3 轉換成本地代碼示意圖
代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編
譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前
有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我
們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術。圖4是代碼混淆的示意圖。
圖4 代碼混淆示意圖
幾種技術的總結
以上幾種技術都有不同的應用環境,各自都有自己的弱點,表1是相關特點的比較。
混淆技術介紹
表1 不同保護技術比較表
到目前為止,對於Java程序的保護,混淆技術還是最基本的保護方法。Java混淆工具也非常多,包括商業的、免費的、開放源代碼的。
Sun公司也提供了自己的混淆工具。它們大多都是對Class文件進行混淆處理,也有少量工具首先對源代碼進行處理,然後再對Class進行處理,這樣加
大了混淆處理的力度。目前,商業上比較成功的混淆工具包括JProof公司的1stBarrier系列、Eastridge公司的JShrink和
4thpass.com的SourceGuard等。主要的混淆技術按照混淆目標可以進行如下分類,它們分別為符號混淆(Lexical
Obfuscation)、數據混淆(Data Obfuscation)、控制混淆(Control
Obfuscation)、預防性混淆(Prevent Transformation)。
符號混淆
在Class中存在許多與程序執行本身無關的信息,例如方法名稱、變數名稱,這些符號的名稱往往帶有一定的含義。例如某個方法名為
getKeyLength(),那麼這個方法很可能就是用來返回Key的長度。符號混淆就是將這些信息打亂,把這些信息變成無任何意義的表示,例如將所有
的變數從vairant_001開始編號;對於所有的方法從method_001開始編號。這將對反編譯帶來一定的困難。對於私有函數、局部變數,通常可
以改變它們的符號,而不影響程序的運行。但是對於一些介面名稱、公有函數、成員變數,如果有其它外部模塊需要引用這些符號,我們往往需要保留這些名稱,否
則外部模塊找不到這些名稱的方法和變數。因此,多數的混淆工具對於符號混淆,都提供了豐富的選項,讓用戶選擇是否、如何進行符號混淆。
數據混淆
圖5 改變數據訪問
數據混淆是對程序使用的數據進行混淆。混淆的方法也有多種,主要可以分為改變數據存儲及編碼(Store and Encode Transform)、改變數據訪問(Access Transform)。
改變數據存儲和編碼可以打亂程序使用的數據存儲方式。例如將一個有10個成員的數組,拆開為10個變數,並且打亂這些變數的名字;將一個兩維數組轉化為一個一維數組等。對於一些復雜的數據結構,我們將打亂它的數據結構,例如用多個類代替一個復雜的類等。
另外一種方式是改變數據訪問。例如訪問數組的下標時,我們可以進行一定的計算,圖5就是一個例子。
在實踐混淆處理中,這兩種方法通常是綜合使用的,在打亂數據存儲的同時,也打亂數據訪問的方式。經過對數據混淆,程序的語義變得復雜了,這樣增大了反編譯的難度。
控制混淆
控制混淆就是對程序的控制流進行混淆,使得程序的控制流更加難以反編譯,通常控制流的改變需要增加一些額外的計算和控制流,因此在性能上會給程序帶來一定的負面影響。有時,需要在程序的性能和混淆程度之間進行權衡。控制混淆的技術最為復雜,技巧也最多。這些技術可以分為如下幾類:
增加混淆控制
通過增加額外的、復雜的控制流,可以將程序原來的語義隱藏起來。例如,對於按次序執行的兩個語句A、B,我們可以增加一個控制條件,以決定B的執行。通過
這種方式加大反匯編的難度。但是所有的干擾控制都不應該影響B的執行。圖6就給出三種方式,為這個例子增加混淆控制。
圖6 增加混淆控制的三種方式
控制流重組
重組控制流也是重要的混淆方法。例如,程序調用一個方法,在混淆後,可以將該方法代碼嵌入到調用程序當中。反過來,程序中的一段代碼也可以轉變為一個函數
調用。另外,對於一個循環的控制流,為可以拆分多個循環的控制流,或者將循環轉化成一個遞歸過程。這種方法最為復雜,研究的人員也非常多。
預防性混淆
這種混淆通常是針對一些專用的反編譯器而設計的,一般來說,這些技術利用反編譯器的弱點或者Bug來設計混淆方案。例如,有些反編譯器對於
Return後面的指令不進行反編譯,而有些混淆方案恰恰將代碼放在Return語句後面。這種混淆的有效性對於不同反編譯器的作用也不太相同的。一個好
的混淆工具,通常會綜合使用這些混淆技術。
案例分析
在實踐當中,保護一個大型Java程序經常需要綜合使用這些方法,而不是單一使用某一種方法。這是因為每種方法都有其弱點和應用環境。綜合使用這些方法使得Java程序的保護更加有效。另外,我們經常還需要使用其它的相關安全技術,例如安全認證、數字簽名、PKI等。
本文給出的例子是一個Java應用程序,它是一個SCJP(Sun Certificate Java
Programmer)的模擬考試軟體。該應用程序帶有大量的模擬題目,所有的題目都被加密後存儲在文件中。由於它所帶的題庫是該軟體的核心部分,所以關
於題庫的存取和訪問就成為非常核心的類。一旦這些相關的類被反編譯,則所有的題庫將被破解。現在,我們來考慮如何保護這些題庫及相關的類。
在這個例子中,我們考慮使用綜合保護技術,其中包括本地代碼和混淆技術。因為該軟體主要發布在Windows上,因此轉換成本地代碼後,僅僅需要維護一個版本的本地代碼。另外,混淆對Java程序也是非常有效的,適用於這種獨立發布的應用系統。
在具體的方案中,我們將程序分為兩個部分,一個是由本地代碼編寫的題庫訪問的模塊,另外一個是由Java開發的其它模塊。這樣可以更高程度地保護題目管理模塊不被反編譯。對於Java開發的模塊,我們仍然要使用混淆技術。該方案的示意圖參見圖7。
圖7 SCJP保護技術方案圖
對於題目管理模塊,由於程序主要在Windows下使用,所以使用C++開發題庫訪問模塊,並且提供了一定的訪問介面。為了保護題庫訪問的介面,我們還增加了一個初始化介面,用於每次使用題庫訪問介面之前的初始化工作。它的介面主要分為兩類:
1. 初始化介面
在使用題庫模塊之前,我們必須先調用初始化介面。在調用該介面時,客戶端需要提供一個隨機數作為參數。題庫管理模塊和客戶端通過這個隨機數,按
一定的演算法同時生成相同的SessionKey,用於加密以後輸入和輸出的所有數據。通過這種方式,只有授權(有效)的客戶端才能夠連接正確的連接,生成
正確的SessionKey,用於訪問題庫信息。非法的客戶很難生成正確的SessionKey,因此無法獲得題庫的信息。如果需要建立更高的保密級別,
也可以採用雙向認證技術。
2. 數據訪問介面
認證完成之後,客戶端就可以正常的訪問題庫數據。但是,輸入和輸出的數據都是由SessionKey所加密的數據。因此,只有正確的題庫管理模塊才能夠使用題庫管理模塊。圖8時序圖表示了題庫管理模塊和其它部分的交互過程。
圖8 題庫管理模塊和其它部分的交互過程圖
B. RHEL源碼安裝的ssh在啟用pam後無法登錄,求解決辦法。
# vi /etc/pam.d/sshd
增加
auth required pam_tally.so deny=3 (deny=N為登錄失敗N次後鎖定用戶)
看設置只要這樣就可以了
C. 我想學SSH框架 但不知道需要什麼編譯工具啊
在MyEclipse8,.5版中自帶了SSH,在這樣的開發平台中編譯可以自動完成.
建議先看看視頻再實際動手操作.
可以載入一些插件來完成編譯工作 如fatjar 容易上手
另外,ant是使用頻度很高的編譯工具.但需要一定的基礎才能用好.
D. 升級openssh出錯,求大神指點怎麼解決
一、環境描述
1)操作系統:CentOS 6.5 64位
2)Openssl升級前版本:openssl 0.9.8e
3)Openssl升級後版本:openssl 1.0.1j(源碼安裝)
4)Openssh升級前版本:openssh-4.3p2-41.el5
5)Openssh升級後版本:openssh_6.7p1(源碼安裝)
6)連接工具SecureCrt
二、安裝Dropbear代替OpenSSH
安裝dropbear只是為了在升級失敗sshd啟動不起來時,依然可以登錄系統。也可以用其他工具代替,比如telnet
1)下載dropbear安裝包
https://matt.ucc.asn.au/dropbear/releases/dropbear-2014.66.tar.bz2
2)檢查安裝依賴包
rpm -qa zlib* gcc make
3)編譯安裝dropbear
# tar jxf dropbear-2014.66.tar.bz2
# cd dropbear-2014.66
# ./configure
# make && make install
檢查生成的文件是否正確:
4)生成證書
# /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key (註:系統默認是沒有/etc/dropbear 目錄的需要自行到創建)
# /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key
5)啟動dropbear
# /usr/local/sbin/dropbear -p 2222 //監聽2222埠
查看是否啟動成功:
三、升級OpenSSL到openssl-1.0.1j,並刪除老版本
1)升級前准備
下載openssl-1.0.1j
http://www.openssl.org/source/openssl-1.0.1j.tar.gz
2)刪除舊版本
#rpm -e `rpm -qa | grep openssl` --allmatches --nodeps
3)安裝openssl, 一定記得加上--shared選項, 否則openssh編譯的時候會找不到新安裝的openssl的library, 會報錯: openssl的 header和library版本不匹配
(註:這里LZ糾結了很久,如果按照步驟執行./config --prefix=/usr --shared 依然報錯: openssl的 header和library版本不匹配,很可能是由於之前安裝的Openssl也是源碼安裝的,而且沒有刪除干凈,需要手工搜索ssl相關的文件
1.執行find / -name ssl
2.將搜索結果中/usr/lib /usr/lib64 /lib64 /lib等目錄下的結果逐一重命名,千萬不要亂刪除,逐一嘗試。這是個笨辦法,目前還沒有發現啥比較好的辦法。)
# ./config --prefix=/usr --shared
# make
# make test
# make install
完畢後查看openssl版本安裝是否正確
# openssl version -a
四、升級sshd到OpenSSH-6.7並刪除老版本ssh
1)升級前准備
查看是否缺包
# rpm -qa | egrep "gcc|make|perl|pam|pam-devel"
如果有配置yum了的話可以直接yum安裝這些包,這樣既可以檢驗是否裝了,沒裝的直接裝上。
yum -y install gcc* make perl pam pam-devel
2)下載openssh-6.7p1.tar.gz
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz
備份ssh :
# mv /etc/ssh /etc/ssh.bak
# openssl version -a
3)編譯安裝新版本openssh
# tar zxf openssh-6.7p1.tar.gz && cd openssh-6.7p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
# make
先卸載完舊版本的openssh,再make install
# rpm -qa | grep openssh
# rpm -e `rpm -qa | grep openssh`
Openssh-askpass是用於圖形界面下輸入口令的,用不著可以不裝
# make install
4)查看是否升級到新版本
5)復制啟動腳本到/etc/init.d
# cp /root/openssh-6.7p1/contrib/RedHat/sshd.init /etc/init.d/sshd
加入開機自啟
# chkconfig --add sshd
6)啟動sshd,用start或reload。不要restart,restart 會直接斷開連接,而並不會接著啟動sshd服務,這時候要通過其他途徑進入機器,然後啟動sshd服務才行。
四、刪除dropbear。
終端軟體里再重新打開一個標簽,
在這里Dropbear用來防止升級不成功,用來替代openssh連接伺服器。
在開啟2222埠(dropbear啟動時的埠,可以設置別的 )的情況下,通過xshell連接的方法是:
ssh 192.168.0.1 2222 (192.168.0.1為需要連接的伺服器ip)
刪除dropbear安裝的文件,並殺掉進程
# rm -rf /etc/dropbear/ /usr/local/sbin/dropbear /usr/local/bin/dropbear*
E. 虛擬機的linux安裝的SSH,怎麼配置吖,求詳細的方法,詳細
(SSH是一個用來替代TELNET、FTP以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。為了系統安全和用戶自身的權益,推廣SSH是必要的。SSH有兩個版本,我們現在介紹的是版本2。) 安裝SSH 具體步驟如下: 獲得SSH軟體包。 ( ftp://ftp.pku.e.cn :/pub/unix/ssh-2.3.0.tar.gz ) 成為超級用戶(root). # gzip ?cd ssh-2.3.0.tar.gz |tar xvf ? # cd ssh-2.3.0 # ./configure 注意,如果你希望用tcp_wrappers來控制SSH,那麼在configure時需要加上選項「--with-libwrap=/path/to/libwrap/」, 用來告訴SSH關於libwrap.a 和tcpd.h的位置。 # make # make install 和SSH有關的程序都放置在/usr/local/bin下,包括ssh,sftp,sshd2, ssh-keygen等。 二、配置 SSH的配置文件在/etc/ssh2下,其中包括sshd2的主機公鑰和私鑰:hostkey和hostkey.pub。這兩個文件通常是在安裝SSH時自動生成的。你可以通過下面的命令重新來生成它們: # rm /etc/ssh2/hostkey* # ssh-keygen2 ?P /etc/ssh2/hostkey 而ssh2_config 文件一般情形下無需修改。 三、啟動sshd2 每個要使用SSH的系統都必須在後台運行sshd2。用手工啟動: # /usr/local/sbin/sshd2& 可以在「/etc/rc2.d/SArrayArraylocal」中加入該命令,這樣系統每次啟動時會自動啟動sshd2。 四、用tcp_wrappers控制SSH 安裝SSH的站點可以用tcp_wrappers來限制哪些IP地址可以通過ssh來訪問自己。比如,在/etc/hosts.allow中加入 sshd,sshd2: 10.0.0.1 那麼只有10.0.0.1可以通過ssh來訪問該主機。 以上都是系統管理員完成的工作。下面我們說說普通用戶如何使用SSH。 五、基本應用 每個用戶在使用SSH之前,都要完成以下步驟: 在本地主機(比如,local.pku.e.cn)上生成自己的ssh公鑰和私鑰。命令如下: local# ssh-keygen Generating 1024-bit dsa key pair 1 oOo.oOo.o Key generated. 1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05 Passphrase :************ /*在此輸入你的口令,以後訪問這台主機時要用。 Again :************ /* Private key saved to /home1/teng/.ssh2/id_dsa_1024_a Public key saved to /home1/teng/.ssh2/id_dsa_1024_a.pub 生成的私鑰和公鑰(id_dsa_1024_a和id_dsa_1024_a.pub)存放在你家目錄的~/.ssh2目錄下。和用戶相關的SSH配置文件都在~/.ssh2下。私鑰由用戶保存在本地主機上,而公鑰需傳送到遠地主機的你自己的帳號的~/.ssh2下,如果你要用ssh2訪問本地主機的話。 在~/.ssh2下創建「identification」文件用來說明進行身份認證的私鑰。命令如下: local:~/.ssh2# echo "IdKey id_dsa_1024_a" > identification 3.同樣地,在遠地主機(比如,remote.pku.e.cn)上完成上面步驟。 4.將本地(local.pku.e.cn)下你自己(這里是「teng」)的公鑰(id_dsa_1024_a.pub)拷貝到遠地主機(remote.pku.e.cn)上你自己家目錄下的.ssh2目錄下,可命名為「local.pub」,一般用ftp上傳即可。 在遠地主機上,你自己家目錄的.ssh2目錄下,創建「authorization」文件,其中指定用來進行身份認證的公鑰文件。命令如下: remote:~/.ssh2# echo 「Key local.pub」 > authorization 現在你可以從本地用ssh2登錄到遠地系統了。命令如下: local# ssh remote.pku.e.cn Passphrase for key "/home1/teng/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05":*********** 這時會要你輸入你的ssh口令(Passphrase)。驗證通過後,即登錄到remote主機上。 ################################################################################ 1、環境: 因為我們選用的SSH伺服器是 http://www.ssh.com 的SSH Secure Shell for unix類產品,所以我們主要介紹一下此類的Ssh伺服器的安裝過程。(SSH有兩個版本,我們現在介紹的是版本2;Openssh就不介紹了,大家有興趣的話可以參考一下網上文章) 2、編譯安裝 我們前面介紹過,現在的Ssh server for unix 類的最新版本是ssh-3.2.Array-1,我建議大家用官方提供的TAR包,當然,如果你不熟悉編譯過程,用RPM等安裝方式也是可以的。如果用RPM安裝,請先下載ssh-3.2.Array-1.i386.rpm , 大家可以到以下地址下載: http://ftp.ssh.com/priv/secureshell/32Arraywks+srv-lt4Arrayldrk/linux/ssh-3.2.Array-1.i386.rpm 安裝時請用管理員許可權 # rpm ?ivh ssh-3.2.Array-1.i386.rpm 如果是升級安裝那參數就用 ?Uvh 而3.2.Array-1的TAR包大家可以到 http://downloads.planetmirror.com/pub/ssh/ssh-3.2.Array.1.tar.gz 下載。安裝時也使用管理員許可權: # tar xzvf ssh-3.2.Array.1.tar.gz # cd ssh-3.2.Array.1 # ./configure (這里我們要說明一下,原來有些文檔寫如果你希望用tcp_wrappers來控制SSH,那麼在configure時需要加上選項「--with-libwrap=/path/to/libwrap/」, 用來告訴SSH關於libwrap.a 和tcpd.h的位置,但3.2.0以上的SSH已經不需要這么麻煩了,它們已經內置了控制訪問許可權的功能。) # make ; make install ; make clean 這樣就結束了安裝。 3、簡單配置Ssh server 無論你是用RPM或TAR包安裝的ssh server,它的配置文件都在/etc/ssh2/sshd2_config,安裝完後一般不用配置它,但如果你的22埠在安裝ssh server之前已經被其他程序佔用,那麼你需要簡單的配置一下這個文件,執行 vi /etc/ssh2/sshd2_config,找到第27行,Port 22 ,把22改成其他的埠就可以了。 4、啟動Ssh server Ssh server 的默認啟動文件是/usr/local/sbin/sshd2,而安裝程序自動做了一個連接到這個文件的名字為sshd的文件,我們只要在/usr/local/sbin/目錄中執行 ./sshd & 就可以簡單的啟用Ssh server,然後我們執行 # netstat ?na 會看見22埠已經被監聽了(你的可能是其他埠,具體看你在sshd2_config文件中的設置了。)但我們不想每次都要手動啟動Ssh server,那麼我們可以修改一下/etc/rc.d/rc.local文件,在這個文件的最後加入以下內容: #start ssh /usr/local/sbin/sshd & 其中第一行為注釋內容,第二行為啟動SSH伺服器並作為後台守護進程運行。 這樣就好了,系統重起時可以自動啟動SSH服務,但是啟動後你如果在伺服器端插上 顯示器 ,會在最後該登陸的時候看到一行字,意思就是Ssh server 服務啟動了,我比較挑剔,不想看到這個提示,而且我想把Ssh服務放到LINUX服務啟動過程中,這樣比較美觀一點。那麼我們就不能修改/etc/rc.d/rc.local文件,我們要進入/etc/init.d/中建立一個SHELL文件,名字就叫sshd 內容如下: #!/bin/bash cd /usr/local/sbin ./sshd & 然後給這個文件加上可執行許可權 # chmod +x sshd 然後進入/etc/rc3.d,做一個軟鏈接文件 # cd /etc/rc3.d # ln -s ../init.d/sshd S13sshd 這樣就達到了我的要求,好了,Ssh server的安裝就介紹到這里吧,安裝是很簡單的,希望大家編譯安裝成功。
F. 怎麼用vnc升級openssh
1、操作方法
1)升級openssh可能會導致ssh無法使用,因此需保證伺服器的telnet可以使用。以免ssh無法使用時,連不上設備。
在前期做linux主機基線整改時禁用了telnet服務,查看當時整改時的腳本,發現禁用telnet服務是通過修改/etc/services文件,在telnet
23/tcp前加#實現的。刪掉前面的#並通過service xinetd
start啟動telnet服務後,發現仍然無法telnet伺服器。提示如下:
Unencrypted
connection refused. Goodbye.
Connection closed
by foreign host.
搜尋解決方法。有人說ekrb5-telnet是一個需要加密的telnet服務,把這個服務啟動上需要加密,將/etc/xinetd.d/ekrb5-telnet裡面的disable改成=yes,再重啟telnet服務service xinetd
restart就可以了,如果 ekrb5-telnet裡面的disable=yes出現修改後又變回no的情況,執行
chkconfig ekrb5-telnet off可將其禁用。
嘗試後發現可以telnet了。
2)在openssl的官網http://www.openssh.com/portable.html上下載最新openssl 1.0.1l版本的安裝包,在openssh的官網http://www.openssh.com/portable.html上下載最新openssh 6.7p1的安裝包。並通過ftp傳到伺服器上。
3)安裝openssl
tar -zxvf
openssl-1.0.1l.tar.gz 解壓openssl的安裝包
cd
openssl-1.0.1l 進入解壓的目錄
./config
--prefix=/usr/local --shared
make
make
test
make
install
安裝完畢後通過openssl version -a
查看openssl版本安裝是否正確
4)安裝openssh
tar -zxvf
openssh-6.7p1.tar.gz 解壓openssh的安裝包
cd
openssh-6.7p1 進入解壓的目錄
./config
--prefix=/usr/local --with-pam --with-zlib
--with-md5-passwords
make
make
install
安裝完畢後service sshd restart 重啟ssh服務
通過ssh -V查看openssh版本安裝是否正確
2、注意事項
1)安裝openssl時./config
--prefix=/usr/local --shared這一條命令一定要加上--shared選項,否則openssh編譯的時候會找不到新安裝的openssl的library,
會報錯: openssl的 header和library版本不匹配。
2)安裝openssl時make
test這一步是進行 SSL 加密協議的完整測試,如果出現錯誤就要一定先找出原因,否則一味繼續可能導致 SSH 不能使用。
3)安裝openssh,./config時,如報下面錯誤:configure: error: PAM headers not
found
運行rpm -qa
| grep pam
pam_ccreds-3-5
pam-0.99.6.2-4.el5
pam_pkcs11-0.5.3-23
pam_passwdqc-1.0.2-1.2.2
pam_smb-1.1.7-7.2.1
pam_krb5-2.2.14-10
發現有pam-0.99.6.2-4.el5,但沒有對應的pam-devel-0.99.6.2-4.el5。
在網上找到pam-devel-0.99.6.2-4.el5.i386.rpm,我是在http://rpm.pbone.net/這個網站上搜索到rpm包,如果要找其他的rpm包,也可以在這個網站上找。
運行rpm -ivh
pam-devel-0.99.6.2-4.el5.i386.rpm進行安裝。
安裝完畢後再進行openssh的./config,正常。
4)安裝完openssh,測試能正常ssh到伺服器後,記得將telnet服務關閉,修改/etc/services文件,在telnet 23/tcp前加上#即可
G. 關於c++通過ssh在遠程計算機上編譯
必須 將你的庫,同樣到你所要ssh的伺服器上面,然後編譯,因為編譯所需庫,必須在你的源碼所在的伺服器上面
H. SSH怎麼用.詳細點.
抓回SSHWinClient-3.0.0.exe, 安裝 SSHWinClient Step by Step:1. 執行 Secure Shell Client ﹝開始 / 程序集 / SSH Secure Shell / Secure Shell Client﹞ 2. 按 Enter 開啟聯機, 輸入主機名稱, 帳號 3. 如果是第一次聯機到該主機, 系統會詢問是否將此主機加入內部資料庫 4. 輸入密碼 5. 聯機成功 建議進行下列設定動作: (Edit->Settings) Profile Settings->Connection, Terminal Answerback 設成 xterm Global Settings->Appearance->Font, Fixedsys, 12 Global Settings->Appearance->Colors, Foreground 設成 Silver; Background 設成 Black 在UNIX Client 端 抓回ssh-1.2.31.tar.gz 或 ssh-2.4.0.tar.gz (或 ssh-3.0.1.tar.gz) 編譯Server 與 Client 執行檔 (需 root privilege): ssh1: sh configure --with-x --with-libwrap --with-etcdir=/etc/ssh1 make depend all install ssh2: sh configure --with-x --with-libwrap make all install 只編譯 Client 執行檔 (不需 root privilege): ssh1: sh configure make depend all mkdir -p $HOME/ssh for files in scp ssh ssh-add ssh-agent ssh-askpass ssh-keygen; do install -m 700 -s $files $HOME/ssh/${files}1 done (為了跟 ssh2 有所區分, 所以把執行檔改名成 ssh1) ssh2: sh configure make all for files in `find apps -name s\*2` ; do files2=`basename $files | tr -d '[2]'` install -m 700 -s $files $HOME/ssh/${files2} done 聯機 執行[email protected], 或是ssh -lfractal.ee.ntu.e.tw 第二:配置好Struts ,Spring ,Hibernate這三個開源框架的開發環境配置。鑒於簡單起見可以使用MyEclipse6.0 的IDE這樣三種開源框架的配置文件IDE已經集成好,直接添加就可以是要用。
I. centos 使用源碼更新openssh,ssh配置文件不能重寫覆蓋導致更新失敗問題
控制台登錄把sshd服務停掉:service sshd stop
把文件mv備份: mv /usr/bin/sshd /usr/bin/sshd.old ; mv /usr/etc/sshd_config /usr/etc/sshd_config.old
然後make install