锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久福利资源站,欧美在线首页,最新热久久免费视频http://www.shnenglu.com/findingworld/archive/2010/03/06/109050.html灝忚嫃灝忚嫃Sat, 06 Mar 2010 07:42:00 GMThttp://www.shnenglu.com/findingworld/archive/2010/03/06/109050.htmlhttp://www.shnenglu.com/findingworld/comments/109050.htmlhttp://www.shnenglu.com/findingworld/archive/2010/03/06/109050.html#Feedback21http://www.shnenglu.com/findingworld/comments/commentRss/109050.htmlhttp://www.shnenglu.com/findingworld/services/trackbacks/109050.html 璇存槑錛?br>         鎰熻阿luckycat 鍜?a id=AjaxHolder_Comments_CommentList_ctl02_NameLink href="http://www.shnenglu.com/vczh/" target=_blank>闄堟鐎?vczh) 鐨勭暀璦銆?br>         涓嬮潰鐨勪唬鐮佸凡緇忓湪Windows VC6/ Cygwin/ Suse Linux鐜涓嬬紪璇戞祴璇曢氳繃.

#include <iostream>
#include 
<list>
#include 
<string>
#include 
<cctype>

using namespace std;

typedef unsigned 
int    UINT32;
typedef unsigned 
short  UINT16;

/************************************************************************/
/* 鏋氫婦瀹氫箟: 鎬у埆                                         */
/************************************************************************/
typedef 
enum enumSexyType
{
    SEXY_TYPE_MAN,   
//鐢鋒?/span>
    SEXY_TYPE_WOMAN, //濂蟲?/span>
    SEXY_TYPE_GAY,   //鐢峰悓鎬ф亱
    SEXY_TYPE_LESIBAIN, //濂沖悓鎬ф亱

    SEXY_TYPE_BUTT   
//鏈煡鎬у埆
}ENUM_SEXY_TYPE;

/************************************************************************/
/* 緇撴瀯浣撳畾涔?  浜?nbsp;                                                     */
/************************************************************************/
typedef 
struct structMan
{
    UINT32    sexType; 
// 鎬у埆 ENUM_SEXY_TYPE
    UINT16      usAge;   // 騫撮緞
    string    strName; // 鍚嶅瓧
    string    strAddress; // 宸ヤ綔鍦板潃
    
    
bool operator < (const structMan &man) const
    {
        
return usAge < man.usAge;
    }

    
bool operator > (const structMan &man) const
    {
        
return usAge > man.usAge;
    }

    structMan(UINT32 enumSexType 
= SEXY_TYPE_MAN,\
              UINT16 usAge 
= 0 ,\
              
const string &refStrName = "" ,\
              
const string &refStrAddress = "")\
              : 
              sexType(enumSexType),\
              usAge(usAge) ,\
              strName(refStrName),\
              strAddress(refStrAddress)
    {
        
//DO NOTHING HERE
    }; 
}MAN;



//////////////////////////////////////////////////////////////////////////

typedef list
<MAN> Family;
typedef list
<MAN>::iterator FamilyIterator;

/*
 *    main鍑芥暟 瀹氫箟
 
*/
int main()
{
    
/* 鍒濆鍖?nbsp;*/
    MAN stFather(SEXY_TYPE_MAN,   
28"鍊掗湁鐔婅佺埜""鍗庝負鎶鏈湁闄愬叕鍙?/span>");
    MAN stMother(SEXY_TYPE_WOMAN, 
27"铏劇背鑰佸""閮戝窞澶у絎簩闄勫睘鍖婚櫌");
    MAN stBaby  (SEXY_TYPE_BUTT,  
0,  "灝忓ぉ浣?/span>",   "鏈煡");
    Family myFamily;

    
/* 渚濇瀛樻斁鍒發ist涓?nbsp;   */
    myFamily.push_back(stFather);
    myFamily.push_back(stMother);
    myFamily.push_back(stBaby);

    
/* 璋冪敤list鐨剆ort鍑芥暟榪涜鎺掑簭, 榛樿浼氫嬌鐢ㄧ粨鏋勪綋閲嶈澆鐨?lt;鍙? 榪涜浠庡皬鍒板ぇ鎺掑簭 */
    myFamily.sort();

    printf(
"鎸夊勾榫勪粠灝忓埌澶ф帓搴?\n");
    FamilyIterator it 
= myFamily.begin();
    
while(it != myFamily.end())
    {
        printf(
"濮撳悕: %s \n", it->strName.c_str());
        it
++;
    }

    
/* 璋冪敤妯℃澘鍑芥暟 greater, 浼犲叆MAN緇撴瀯浣? 榪欐牱浼氳皟鐢ㄧ粨鏋勪綋閲嶈澆鐨?gt;鍙? 榪涜浠庡ぇ鍒板皬鎺掑簭 */
    greater
<MAN> gt;
    myFamily.sort(gt);

    printf(
"\n鎸夊勾榫勪粠澶у埌灝忔帓搴?\n");
    it 
= myFamily.begin();
    
while(it != myFamily.end())
    {
        printf(
"濮撳悕: %s \n", it->strName.c_str());
        it
++;
    }

    
return 0;
}




灝忚嫃 2010-03-06 15:42 鍙戣〃璇勮
]]>
c璇█鍩虹http://www.shnenglu.com/findingworld/archive/2009/10/28/99622.html灝忚嫃灝忚嫃Tue, 27 Oct 2009 16:18:00 GMThttp://www.shnenglu.com/findingworld/archive/2009/10/28/99622.htmlhttp://www.shnenglu.com/findingworld/comments/99622.htmlhttp://www.shnenglu.com/findingworld/archive/2009/10/28/99622.html#Feedback0http://www.shnenglu.com/findingworld/comments/commentRss/99622.htmlhttp://www.shnenglu.com/findingworld/services/trackbacks/99622.htmltypedef struct
{
    int  num;
    char name[10];
    int  age;
}Student,*pStudent;

void printName(pStudent pt)
{
    printf("%s\n",pt->name);
    return;
}

void main()
{
    Student students[3]={{111, "liu", 18},
                {222, "wang", 19},
                {333, "zhao", 10}};
    printName(students+2);
    return;
}

2銆侀夋嫨
#include <stdio.h>
void main()
{
    union
    {
        int k;
        char i[2];
    }*s, a;
    s=&a;
    s->i[0]=0x39;
    s->i[1]=0x38;
    printf("%x\n", a.k);
}

A.3839 B.3938 C.380039 D.涓嶅彲棰勭煡

3銆?br>enum ENUM_A
{
    X1,
    Y1,
    Z1=6,
    A1,
    B1
};

enum ENUM_A enumA=Y1;
enum ENUM_A enumB=B1;

enumA=_______
enumB=_______

4銆?br>VCHAR *pucCharArray[10][10];
typedef union unRec
{
    ULONG ulIndex;
    USHORT usLevel[6];
    UCHAR ucDos;
}REC_S;

REC_S stMax, *pstMax;

鍥涘瓧鑺傚榻愭椂    sizeof(pucCharArray)=______
           sizeof(stMax)=______
        sizeof(*stMax)=______

5銆?br>typedef union unHead
{
    UCHAR aucSrc[6];
    struct tagContent
    {
        UCHAR ucFlag[3];
        ULONG ulNext;
    }Content;
}HEAD_S;

32浣岰PU,VC緙栬瘧鐜涓?
寮哄埗涓瀛楄妭瀵歸綈鎯呭喌涓?璇鋒寚鍑簊izeof(HEAD_S)
寮哄埗浜屽瓧鑺傚榻愭儏鍐典笅,璇鋒寚鍑簊izeof(HEAD_S)
寮哄埗鍥涘瓧鑺傚榻愭儏鍐典笅,璇鋒寚鍑簊izeof(HEAD_S)


6銆?br>鍥涘瓧鑺傚榻愮殑鎯呭喌涓?
typedef struct tagRec
{
    long lA1;
    char cA2;
    char cA3;
    long lA4;
    long lA5;
}REC_S;

void main()
{
    REC_S stMax;
    printf("\r\n sizeof(stMax)=%d", sizeof(stMax));
    return;
}

杈撳嚭緇撴灉涓? sizeof(stMax)=______

7銆?br>typedef struct tagtest
{
    unsigned char ucFlag;
    unsigned long ulLen;
}TEST_S;

TEST_S test[10];

鍥涘瓧鑺傚鍏舵椂: sizeof(TEST_S)=_____ sizeof(test)=______

8銆?br>#pragma pack(4)
int main(int argc, char* argv[])
{
    struct tagtest1
    {
      short a;
      char  d;
      long  b;
      long  c;
    }

    struct tagtest2
    {
      long  b;
      short c;
      char  d;
      long  a;
    }

    struct tagtest3
    {
      short c;
      long  b;
      char  d;
      long  a;
    }

    struct tagtest1 stT1;
    struct tagtest2 stT2;
    struct tagtest3 stT3;
    printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
    return 0;
}
#pragma pack()

杈撳嚭鏄痏_____

9銆?br>typedef struct Head
{
    VCHAR aucSrc[6];
    VLONG ulType;
}HEAD_S;

鍦ㄥ己鍒朵竴瀛楄妭瀵瑰叾鐨勬儏鍐典笅,sizeof(HEAD_S)=____
鍦ㄥ己鍒朵簩瀛楄妭瀵瑰叾鐨勬儏鍐典笅,sizeof(HEAD_S)=____

10銆?br>union tagAAAA
{
  struct
  {
    char  ucFirst;
    short usSecond;
    char  ucThird;
  }half;
  long lI;
}number;

struct tagBBBB
{
  char  ucFirst;
  short usSecond;
  char  ucThird;
  short usForth;
}half;

struct tagCCCC
{
  struct
  {
     char ucFirst;
     short usSecond;
     char ucThird;
  }half;
  long lI;
};

鍦ㄥ瓧鑺傚鍏朵負1鐨勬儏鍐典笅:
sizeof(union tagAAAA)=_____
sizeof(struct tagBBBB)=____
sizeof(struct tagCCCC)=____
瀛楄妭瀵歸綈涓?鐨勬儏鍐典笅:
sizeof(union tagAAAA)=_____
sizeof(struct tagBBBB)=____
sizeof(struct tagCCCC)=____


灝忚嫃 2009-10-28 00:18 鍙戣〃璇勮
]]>
浠g爜緇熻鎵撴姌鐜?/title><link>http://www.shnenglu.com/findingworld/archive/2009/08/21/94059.html</link><dc:creator>灝忚嫃</dc:creator><author>灝忚嫃</author><pubDate>Fri, 21 Aug 2009 15:24:00 GMT</pubDate><guid>http://www.shnenglu.com/findingworld/archive/2009/08/21/94059.html</guid><wfw:comment>http://www.shnenglu.com/findingworld/comments/94059.html</wfw:comment><comments>http://www.shnenglu.com/findingworld/archive/2009/08/21/94059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/findingworld/comments/commentRss/94059.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/findingworld/services/trackbacks/94059.html</trackback:ping><description><![CDATA[<table style="WIDTH: 320px; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=3 border=1> <tbody> <tr> <td> 璇█</td> <td>鎵撴姌鐜?/td> </tr> <tr> <td>ASM</td> <td>1.44</td> </tr> <tr> <td>C/C++</td> <td>1</td> </tr> <tr> <td>Java</td> <td>0.7</td> </tr> <tr> <td>SQL</td> <td>0.62</td> </tr> <tr> <td>JSP</td> <td>0.7</td> </tr> <tr> <td>HTML</td> <td>0.35</td> </tr> <tr> <td>XML</td> <td>0.7</td> </tr> <tr> <td>JS</td> <td>0.7</td> </tr> <tr> <td>SHELL</td> <td>1</td> </tr> <tr> <td>VHDL</td> <td>1</td> </tr> <tr> <td>Python</td> <td>0.7</td> </tr> <tr> <td>VB</td> <td>0.8</td> </tr> <tr> <td>Delphi</td> <td>0.8</td> </tr> <tr> <td>Bat</td> <td>1</td> </tr> </tbody> </table> <br> <img src ="http://www.shnenglu.com/findingworld/aggbug/94059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/findingworld/" target="_blank">灝忚嫃</a> 2009-08-21 23:24 <a href="http://www.shnenglu.com/findingworld/archive/2009/08/21/94059.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>gcc 搴撻『搴忛棶棰樿В鍐蟲柟娉?/title><link>http://www.shnenglu.com/findingworld/archive/2008/11/09/66408.html</link><dc:creator>灝忚嫃</dc:creator><author>灝忚嫃</author><pubDate>Sun, 09 Nov 2008 04:18:00 GMT</pubDate><guid>http://www.shnenglu.com/findingworld/archive/2008/11/09/66408.html</guid><wfw:comment>http://www.shnenglu.com/findingworld/comments/66408.html</wfw:comment><comments>http://www.shnenglu.com/findingworld/archive/2008/11/09/66408.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/findingworld/comments/commentRss/66408.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/findingworld/services/trackbacks/66408.html</trackback:ping><description><![CDATA[    浣跨敤gcc鐢熸垚鍙墽琛屾枃浠舵椂,澶ч儴鍒嗘椂鍊欐垜浠渶瑕佽繛鎺ユ垜浠嚜宸辨墦鍖?AR)濂界殑涓浜涘簱鏂囦歡,瀵逛簬涓ぇ鍨?50涓囦唬鐮佽浠ヤ笂)欏圭洰涓婏紝浣犲皢闈㈠鏁頒釜欏圭洰緇?鏈濂界殑鎯呭喌鏄瘡涓」鐩粍鍙戝竷鑷繁鐨勬墦鍖?ar鏂囦歡,榪欎簺.ar鏂囦歡涔嬮棿娌℃湁浠諱綍渚濊禆鍏崇郴, 鐒跺悗鐢辨寔緇泦鎴愶紙ci錛夊皬緇勫榪欎簺鍖呰繘琛岃繛鎺?涓嶅垢鐨勬槸,榪欏嚑涔庢槸涓嶅彲鑳界殑, 鎴戜滑鍦ㄨ繛鎺ユ椂榪樻槸閬囧埌浜唋iba.ar鍜宭ibb.ar鐩鎬簰渚濊禆鐨勬儏鍐點?br><br>鍥犱負gcc鐨勫簱鏄釜鏈夌偣鎬殑鐗規?鍦ㄧ湅-l甯姪鏃跺彲浠ョ湅鍒?<br>        -l library<br>            Search the library named library when linking.  (The second alter-<br>            native with the library as a separate argument is only for POSIX<br>            compliance and is not recommended.)<br> <br>            <span style="font-weight: bold;">It makes a difference where in the command you write this option;</span><br style="font-weight: bold;"> <span style="font-weight: bold;">           the linker searches and processes libraries and object files in the</span><br style="font-weight: bold;"> <span style="font-weight: bold;">           order they are specified.  Thus, foo.o -lz bar.o searches library z</span><br style="font-weight: bold;"> <span style="font-weight: bold;">           after file foo.o but before bar.o.  If bar.o refers to functions in</span><br style="font-weight: bold;"> <span style="font-weight: bold;">           z, those functions may not be loaded.</span><br><br>    鍑轟簬鐭ヨ瘑浜ф潈淇濇姢鐨勮冭檻,姣忎竴涓」鐩粍鍙兘鍙厑璁哥湅鍒拌嚜宸辯殑浠g爜鍜屽埆鐨勯」鐩粍鐨勫ご鏂囦歡,榪欑粰CI灝忕粍甯︽潵浜嗗緢澶寸棝鐨勪簨鎯?寰堝鏃跺欎綘涓嶅緱涓嶆妸搴撻『搴忔潵鍥炶皟鏁淬傛垜涔熼亣鍒頒簡榪欐牱璁╀漢宕╂簝鐨勬儏褰紝闂鏄浜巐iba.ar鍜宭ibb.ar鐩鎬簰浠ユ潵鐨勬儏褰紝浣犲彲鑳芥渶緇堥噰鍙栦笐闄嬬殑鍋氭硶,灝嗗叾涓竴涓簱鍦ㄥ墠鍚庢斁涓ゆ:<br>gcc -o out.bin liba.ar libb.ar liba.ar -lrt<br>鍚﹀垯錛屾偍灝嗕笉寰椾笉闈㈠ "xx not referenced"涔嬬被鐨勯敊璇?br><br>鐪嬬湅gcc鐨勫府鍔?鏈変笅闈㈢殑閫夐」<br>-Xlinker option<br>           <span style="font-weight: bold;">Pass option as an option to the linker.</span>  You can use this to supply<br>           system-specific linker options which GCC does not know how to rec-<br>           ognize.<br><br>           If you want to pass an option that takes an argument, you must use<br>           -Xlinker twice, once for the option and once for the argument.  For<br>           example, to pass -assert definitions, you must write -Xlinker<br>           -assert -Xlinker definitions.  It does not work to write -Xlinker<br>           "-assert definitions", because this passes the entire string as a<br>           single argument, which is not what the linker expects.<br><br>涔熷氨鏄錛?Xlinker鏄皢榪炴帴閫夐」浼犵粰榪炴帴鍣ㄧ殑錛岃刀蹇湅鐪媗d鐨勫府鍔╂湁娌℃湁瑙e喅搴撻『搴忕殑閫夐」鍚?<br> -( archives -)<br>       --start-group archives --end-group<br>           The archives should be a list of archive files.  They may be either<br>           explicit file names, or -l options.<br><br>          <span style="font-weight: bold;"> The specified archives are searched repeatedly until no  new  unde-</span><br style="font-weight: bold;"><span style="font-weight: bold;">           fined  references  are  created. </span>  Normally, an archive is searched<br>           only once in the order that it is specified on  the  command  line.<br>           If  a symbol in that archive is needed to resolve an undefined sym-<br>           bol referred to by an object in an archive that  appears  later  on<br>           the command line, the linker would not be able to resolve that ref-<br>           erence.  By grouping the archives, they all be searched  repeatedly<br>           until all possible references are resolved.<br><br>           Using  this  option has a significant performance cost.  It is best<br>           to use it only  when  there  are  unavoidable  circular  references<br>           between two or more archives.<br><br><br>涓嶉敊錛屾垜浠湁涓湁鐐規紓鐨勯夐」,-(鍜?),瀹冭兘澶熷己鍒?The specified archives are searched repeatedly"<br>god,榪欏氨鏄垜浠鎵劇殑鍟︺?br><br>鏈緇堢殑鍋氭硶:<br>gcc -o output.bin -Xlinker "-(" liba.ar libb.ar -Xlinker "-)" -lrt<br><br>榪欐牱鍙互瑙e喅搴撻『搴忕殑闂浜嗭紒闂鏄紝濡傛灉浣犵殑搴撶浉浜掗棿鐨勪緷璧栧鏋滈敊緇煎鏉傜殑璇濓紝鍙兘浼氬鍔犺繛鎺ョ殑鏃墮棿錛屼笉榪囷紝鍋氭灦鏋勮璁$殑閮藉簲璇ヨ兘鑰冭檻鍒拌繖浜涢棶棰樺惂銆?br><br><br><br><br><br><br><br><br> <img src ="http://www.shnenglu.com/findingworld/aggbug/66408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/findingworld/" target="_blank">灝忚嫃</a> 2008-11-09 12:18 <a href="http://www.shnenglu.com/findingworld/archive/2008/11/09/66408.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞澆]鐞嗚В RSA/DSA 璁よ瘉 http://www.shnenglu.com/findingworld/archive/2008/05/01/48588.html灝忚嫃灝忚嫃Thu, 01 May 2008 07:54:00 GMThttp://www.shnenglu.com/findingworld/archive/2008/05/01/48588.htmlhttp://www.shnenglu.com/findingworld/comments/48588.htmlhttp://www.shnenglu.com/findingworld/archive/2008/05/01/48588.html#Feedback0http://www.shnenglu.com/findingworld/comments/commentRss/48588.htmlhttp://www.shnenglu.com/findingworld/services/trackbacks/48588.html鐞嗚В RSA/DSA 璁よ瘉

Daniel Robbins (drobbins@gentoo.org)
鎬昏錛忛甯墽琛屽畼錛孏entoo Technologies錛孖nc.
2001 騫?7 鏈?/p>

鍦ㄦ湰緋誨垪鏂囩珷涓紝鎮ㄥ皢瀛︿範 RSA 鍜?DSA 璁よ瘉鐨勫伐浣滃師鐞嗭紝浠ュ強浜嗚В濡備綍姝g‘璁劇疆鏃犲瘑鐮佽璇併傚湪鏈郴鍒楃殑絎竴綃囨枃绔犻噷錛孌aniel Robbins 涓昏浠嬬粛 RSA 鍜?DSA 璁よ瘉鍗忚騫跺悜鎮ㄥ睍紺哄浣曞湪緗戠粶涓婂簲鐢ㄨ繖浜涘崗璁?/blockquote>

鎴戜滑涓湁璁稿浜烘妸浼樼鐨?OpenSSH錛堝弬瑙佹湰鏂囧悗闈㈢殑鍙傝冭祫鏂?/u>錛夌敤浣滃彜鑰佺殑 rsh 鍛戒護鐨勬浛浠e搧錛孫penSSH 涓嶄粎鏄畨鍏ㄧ殑鑰屼笖鏄姞瀵嗙殑銆侽penSSH 鏇村姞鍚稿紩浜虹殑鐗規т箣涓鏄畠鑳藉浣跨敤鍩轟簬涓瀵逛簰琛ョ殑鏁板瓧寮忓瘑閽ョ殑 RSA 鍜?DSA 璁よ瘉鍗忚鏉ヨ璇佺敤鎴楓俁SA 鍜?DSA 璁よ瘉鎵胯涓嶅繀鎻愪緵瀵嗙爜灝辮兘澶熷悓榪滅▼緋葷粺寤虹珛榪炴帴錛岃繖鏄畠鐨勪富瑕侀瓍鍔涗箣涓銆傝櫧鐒惰繖闈炲父鍚稿紩浜猴紝浣嗘槸 OpenSSH 鐨勬柊鐢ㄦ埛浠父甯鎬互涓縐嶅揩閫熷嵈涓嶅畬鍠勭殑鏂瑰紡閰嶇疆 RSA/DSA錛岀粨鏋滆櫧鐒跺疄鐜頒簡鏃犲瘑鐮佺櫥褰曪紝鍗翠篃鍦ㄦ榪囩▼涓紑浜嗕竴涓緢澶х殑瀹夊叏婕忔礊銆?/p>

浠涔堟槸 RSA/DSA 璁よ瘉錛?/span>
SSH錛岀壒鍒槸 OpenSSH錛堝畬鍏ㄥ厤璐圭殑 SSH 鐨勫疄鐜幫級錛屾槸涓涓笉鍙濊鐨勫伐鍏楓傜被浼間簬 rsh錛?code>sshd錛屽嵆 telnet 涓嶅悓鐨勬槸錛?code>ssh 鐨勭‘寰堟錛屼絾榪樻槸鏈変竴涓?ssh-agent 闅愯棌宸茬粡瑙e瘑鐨勪笓鐢ㄥ瘑閽ワ紝榪樺皢浠嬬粛 ssh-agent 鐨勫墠绔紝鍙互鍦ㄤ笉鐗虹壊瀹夊叏鎬х殑鍓嶆彁涓嬫彁渚涜澶氫究鍒┿傚鏋滄偍涓鐩存兂瑕佹帉鎻?OpenSSH 鏇撮珮綰х殑璁よ瘉鍔熻兘鐨勮瘽錛岄偅涔堝氨璇鋒偍緇х畫寰涓嬭鍚с?/p>

RSA/DSA 瀵嗛挜鐨勫伐浣滃師鐞?/span>
涓嬮潰浠庢暣浣撲笂綺楃暐鐨勪粙緇嶄簡 RSA/DSA 瀵嗛挜鐨勫伐浣滃師鐞嗐傝鎴戜滑浠庝竴縐嶅亣鎯崇殑鎯呭艦寮濮嬶紝鍋囧畾鎴戜滑鎯崇敤 RSA 璁よ瘉鍏佽涓鍙版湰鍦扮殑 Linux 宸ヤ綔绔欙紙縐頒綔 localbox錛夋墦寮 remotebox 涓婄殑涓涓繙紼?shell錛?em>remotebox 鏄垜浠殑 ISP 鐨勪竴鍙版満鍣ㄣ傛鍒伙紝褰撴垜浠瘯鍥劇敤
% ssh drobbins@remotebox
drobbins@remotebox's password:

姝ゅ鎴戜滑鐪嬪埌鐨勬槸 ssh 灝變細鐢ㄥ畨鍏ㄥ瘑鐮佽璇佸崗璁紝鎶婃垜浠殑瀵嗙爜浼犻佺粰 remotebox 榪涜楠岃瘉銆備絾鏄紝鍜?ssh 緙虹渷鐨勮璇佹柟娉曠浉褰撳畨鍏紝RSA 鍜?DSA 璁よ瘉鍗翠負鎴戜滑寮鍒涗簡涓浜涙柊鐨勬綔鍦ㄧ殑鏈轟細銆?/p>

浣嗘槸錛屼笌 sshd 鑳藉瀹氫綅瀹冭屾妸瀹冩斁鍦ㄤ竴涓笓闂ㄧ殑鏂囦歡錛垀/.ssh/authorized_keys錛夐噷錛屾垜浠氨涓轟嬌鐢?RSA 璁よ瘉鐧誨綍鍒?remotebox 涓婂仛濂戒簡鍑嗗銆?/p>

瑕佺敤 RSA 鐧誨綍鐨勬椂鍊欙紝鎴戜滑鍙鍦?localbox 鐨勬帶鍒跺彴閿叆 ssh 鍛婅瘔 remotebox 鐨?sshd 浼氱敓鎴愪竴涓殢鏈烘暟錛屽茍鐢ㄦ垜浠厛鍓嶆嫹璐濊繃鍘葷殑鍏敤瀵嗛挜瀵硅繖涓殢鏈烘暟榪涜鍔犲瘑銆傜劧鍚庯紝ssh銆傛帴涓嬫潵錛岃疆鍒版垜浠殑 sshd 寰楀嚭緇撹錛屾棦鐒舵垜浠寔鏈夊尮閰嶇殑涓撶敤瀵嗛挜錛屽氨搴斿綋鍏佽鎴戜滑鐧誨綍銆傚洜姝わ紝鎴戜滑鏈夊尮閰嶇殑涓撶敤瀵嗛挜榪欎竴浜嬪疄鎺堟潈鎴戜滑璁塊棶 remotebox銆?/p>

涓ら」娉ㄦ剰浜嬮」
鍏充簬 RSA 鍜?DSA 璁よ瘉鏈変袱欏歸噸瑕佺殑娉ㄦ剰浜嬮」銆傜涓欏規槸鎴戜滑鐨勭‘鍙渶瑕佺敓鎴愪竴瀵瑰瘑閽ャ傜劧鍚庢垜浠彲浠ユ妸鎴戜滑鐨勫叕鐢ㄥ瘑閽ユ嫹璐濆埌鎯寵璁塊棶鐨勯偅浜涜繙紼嬫満鍣ㄤ笂錛屽畠浠兘浼氭牴鎹垜浠殑閭f妸涓撶敤瀵嗛挜榪涜鎭板綋鐨勮璇併傛崲鍙ヨ瘽璇達紝鎴戜滑騫朵笉闇瑕佷負鎯寵璁塊棶鐨?em> 姣忎釜緋葷粺閮藉噯澶囦竴瀵瑰瘑閽ャ傚彧瑕佷竴瀵瑰氨瓚沖浜嗐?/p>

鍙︿竴欏規敞鎰忎簨欏規槸涓撶敤瀵嗛挜涓嶅簲钀藉叆鍏跺畠浜烘墜涓?/em>銆傛鏄笓鐢ㄥ瘑閽ユ巿鏉冩垜浠闂繙紼嬬郴緇燂紝浠諱綍鎷ユ湁鎴戜滑鐨勪笓鐢ㄥ瘑閽ョ殑浜洪兘浼氳鎺堜簣鍜屾垜浠畬鍏? 鐩稿悓鐨勭壒鏉冦傚鍚屾垜浠笉鎯寵闄岀敓浜烘湁鎴戜滑鐨勪綇澶勭殑閽ュ寵涓鏍鳳紝鎴戜滑搴旇淇濇姢鎴戜滑鐨勪笓鐢ㄥ瘑閽ヤ互闃叉湭鎺堟潈鐨勪嬌鐢ㄣ傚湪姣旂壒鍜屽瓧鑺傜殑涓栫晫閲岋紝榪欐剰鍛崇潃娌℃湁浜烘槸鏈潵灝? 搴旇鑳借鍙栨垨鏄嫹璐濇垜浠殑涓撶敤瀵嗛挜鐨勩?/p>

ssh 鍜?ssh 琚緗垚浜嗗鏋滄垜浠殑瀵嗛挜鐨勬枃浠舵潈闄愬厑璁擱櫎鎴戜滑涔嬪鐨勪換浣曚漢璇誨彇瀵嗛挜錛屽氨鎵撳嵃鍑轟竴鏉″ぇ澶х殑璀﹀憡娑堟伅銆傚叾嬈★紝鍦ㄦ垜浠敤 ssh-keygen 浼氳姹傛垜浠緭鍏ヤ竴涓瘑鐮佺煭璇傚鏋滄垜浠緭鍏ヤ簡瀵嗙爜鐭錛?code>ssh 浠ュ簲鐢?RSA 鍜?DSA 璁よ瘉鍗忚銆?/p>

ssh-keygen 緇嗘帰
璁劇疆 RSA 璁よ瘉鐨勭涓姝ヤ粠鐢熸垚涓瀵瑰叕鐢紡涓撶敤瀵嗛挜瀵瑰紑濮嬨俁SA 璁よ瘉鏄?
% ssh-keygen
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/drobbins/.ssh/identity): (hit enter)
Enter passphrase (empty for no passphrase): (enter a passphrase)
Enter same passphrase again: (enter it again)
Your identification has been saved in /home/drobbins/.ssh/identity.
Your public key has been saved in /home/drobbins/.ssh/identity.pub.
The key fingerprint is:
a4:e7:f2:39:a7:eb:fd:f8:39:f1:f1:7b:fe:48:a1:09 drobbins@localbox

褰?ssh-keygen 灝嗘妸涓撶敤瀵嗛挜淇濆瓨鍦ㄦ璺緞涓紝鍏敤瀵嗛挜灝卞瓨鍦ㄧ揣涓村畠鐨勪竴涓彨鍋?identity.pub 鐨勬枃浠墮噷銆?/p>

榪樿璇鋒偍娉ㄦ剰涓涓?ssh-keygen 鐢ㄨ繖涓瘑鐮佺煭璇姞瀵嗕簡鎴戜滑鐨勪笓鐢ㄥ瘑閽ワ紙~/.ssh/identity錛夛紝浠ヤ嬌鎴戜滑鐨勪笓鐢ㄥ瘑閽ュ浜庨偅浜涗笉鐭ラ亾榪欎釜瀵嗙爜鐭鐨勪漢灝嗗彉寰楁鏃犵敤澶勩?/p>

榪芥眰蹇熺殑鎶樿》鏂規
褰撴垜浠寚瀹氬瘑鐮佺煭璇椂錛岃櫧鐒惰繖浣垮緱 ssh 榪炴帴鍒?drobbins@remotebox 甯愭埛鏃訛紝ssh 瀹㈡埛紼嬪簭灝變細澶勭悊鍏朵綑鐨勪簨鎯呫傝櫧鐒朵嬌鐢ㄦ垜浠殑榪滅▼瀵嗙爜鍜屼嬌鐢?RSA 瀵嗙爜鐭鐨勬満鍒跺畬鍏ㄤ笉鍚岋紝浣嗗疄闄呬笂榪樻槸浼氭彁紺烘垜浠緭鍏ヤ竴涓?#8220;淇濆瘑鐨勭煭璇?#8221;緇?
# ssh drobbins@remotebox
Enter passphrase for key '/home/drobbins/.ssh/identity': (enter passphrase)
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

%

榪欓噷灝辨槸浜轟滑緇忓父浼氳璇鑰屽鑷磋拷姹傚揩閫熺殑鎶樿》鏂規鐨勫湴鏂廣傛湁寰堝鏃跺欙紝浠呬粎鏄負浜嗕笉蹇呰緭鍏ュ瘑鐮侊紝浜轟滑灝變細鍒涘緩涓嶅姞瀵嗙殑涓撶敤瀵嗛挜銆傞偅鏍風殑璇濓紝浠栦滑鍙杈撳叆
# ssh drobbins@remotebox
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

%

鐒惰岋紝灝界榪欐牱寰堟柟渚匡紝浣嗘槸鍦ㄨ繕娌℃湁瀹屽叏鐞嗚В榪欑鏂規硶瀵瑰畨鍏ㄦх殑褰卞搷鏃訛紝鎮ㄤ笉搴旇浣跨敤銆傚鏋滄湁浜哄湪鏌愪竴鏃跺埢闂叆浜?localbox錛屼竴鎶婁笉鍔犲瘑鐨勪笓鐢ㄥ瘑閽ヤ嬌寰椾粬浠篃鑷姩鏈夋潈璁塊棶 remotebox 浠ュ強鍏跺畠鎵鏈夌敤榪欐妸鍏敤瀵嗛挜閰嶇疆榪囩殑緋葷粺銆?/p>

鎴戠煡閬撴偍鍦ㄦ兂浜涗粈涔堛傛棤瀵嗙爜璁よ瘉錛岃櫧鐒舵湁鐐瑰啋闄╋紝鍙湅璧鋒潵鐨勭‘寰堣浜恒傛垜瀹屽叏鍚屾剰銆備絾鏄紝 榪樻湁鏇村ソ鐨勫姙娉曪紒璇風浉淇℃垜錛屾垜灝嗗悜鎮ㄥ睍紺哄浣曟棦鍙互浜彈鍒版棤瀵嗙爜璁よ瘉鐨勫ソ澶勶紝鍙堜笉蹇呯壓鐗蹭笓鐢ㄥ瘑閽ョ殑瀹夊叏鎬с傚湪鎴戠殑涓嬩竴綃囨枃绔犻噷錛屾垜榪樺皢鍚戞偍灞曠ず濡備綍鐔熺粌鐨勪嬌鐢?ssh-agent 鍋氬ソ鍑嗗銆備笅闈㈡槸閫愭鐨勬寚瀵箋?/p>

RSA 瀵嗛挜瀵圭殑鐢熸垚
瑕佽緗?RSA 璁よ瘉錛屾垜浠渶瑕佹墽琛岀敓鎴愬叕鐢紡涓撶敤瀵嗛挜瀵圭殑涓嬈℃ф楠ゃ傛垜浠殑杈撳叆濡備笅錛?/p>
% ssh-keygen

鍑虹幇鎻愮ず鏃訛紝璇鋒帴鍙楃己鐪佺殑瀵嗛挜浣嶇疆錛堝吀鍨嬬殑鎯呭喌涓嬫槸 ~/.ssh/identity 鍜屽瓨鍌ㄥ叕鐢ㄥ瘑閽ョ殑 ~/.ssh/identity.pub錛夛紝騫舵彁渚涚粰 ssh-keygen 瀹屾垚錛屾偍灝嗕細寰楀埌涓鎶婂叕鐢ㄥ瘑閽ュ拰涓鎶婄敤瀵嗙爜鐭鍔犲瘑鐨勪笓鐢ㄥ瘑閽ャ?/p>

RSA 鍏敤瀵嗛挜鐨勫畨瑁?/span>
鎺ヤ笅鏉ワ紝鎴戜滑闇瑕佹妸姝e湪榪愯
% scp ~/.ssh/identity.pub drobbins@remotebox:

鐢變簬 RSA 璁よ瘉榪樻病鏈夊畬鍏ㄨ緗ソ錛屾墍浠ヤ細鎻愮ず鎴戜滑杈撳叆 remotebox 涓婄殑瀵嗙爜銆傝鎮ㄧ収鍋氥傜劧鍚庯紝鐧誨綍鍒?remotebox 騫舵妸鍏敤瀵嗛挜闄勫姞鍒版枃浠?~/.ssh/authorized_keys 涓婏紝濡備笅鎵紺猴細

% ssh drobbins@remotebox
drobbins@remotebox's password: (enter password)
Last login: Thu Jun 28 20:28:47 2001 from localbox.gentoo.org

Welcome to remotebox!

% cat identity.pub >> ~/.ssh/authorized_keys
% exit

鐜板湪錛岄厤緗繃 RSA 璁よ瘉浠ュ悗錛屽綋鎴戜滑璇曞浘浣跨敤
% ssh drobbins@remotebox
Enter passphrase for key '/home/drobbins/.ssh/identity':



濂藉搰錛孯SA 璁よ瘉鐨勯厤緗畬鎴愪簡錛佸鏋滃垰鎵嶆病鏈夋彁紺烘偍杈撳叆瀵嗙爜鐭錛屾偍鍙互璇曢獙涓涓嬩互涓嬪嚑縐嶆儏鍐點傜涓錛屽皾璇曢氳繃杈撳叆 ssh 鍙簲鐢?ssh 鍗忚鐗堟湰 1錛屽鏋滃嚭浜庢煇縐嶅師鍥犺繙紼嬬郴緇熺己鐪佽緗殑鏄?DSA 璁よ瘉鐨勮瘽錛屽彲鑳戒細瑕佹眰榪欎箞鍋氥傚鏋滀笉濂忔晥鐨勮瘽錛岃紜鎮ㄧ殑 /etc/ssh/ssh_config 閲屾病鏈夊啓鐫榪欎箞涓琛?DSA 瀵嗛挜鐨勭敓鎴?/span>
ssh 鍗忚鐨勬渶鏂扮増鏈傜洰鍓嶆墍鏈夌殑 OpenSSH 鐗堟湰閮藉簲璇ユ棦鑳戒嬌鐢?RSA 瀵嗛挜鍙堣兘浣跨敤 DSA 瀵嗛挜銆侱SA 瀵嗛挜浠ュ涓嬬被浼間簬 RSA 瀵嗛挜鐨勬柟寮忎嬌鐢?OpenSSH 鐨?
% ssh-keygen -t dsa

鍙堜細鎻愮ず鎴戜滑杈撳叆瀵嗙爜鐭銆傝緭鍏ヤ竴涓畨鍏ㄧ殑瀵嗙爜鐭銆傝繕浼氭彁紺烘垜浠緭鍏ヤ繚瀛?DSA 瀵嗛挜鐨勪綅緗傛甯告儏鍐典笅錛岀己鐪佺殑 ~/.ssh/id_dsa 鍜?~/.ssh/id_dsa.pub 灝卞彲浠ヤ簡銆傚湪鎴戜滑涓嬈℃х敓鎴?DSA 瀵嗛挜瀹屾垚鍚庯紝灝辮鎶婃垜浠殑 DSA 鍏敤瀵嗛挜瀹夎鍒拌繙紼嬬郴緇熶笂鍘諱簡銆?/p>

DSA 鍏敤瀵嗛挜鐨勫畨瑁?/span>
DSA 鍏敤瀵嗛挜鐨勫畨瑁呭張鏄嚑涔庡拰 RSA 瀹夎瀹屽叏涓鏍楓傚浜?DSA錛屾垜浠皢瑕佹妸 ~/.ssh/id_dsa.pub 鏂囦歡鎷瘋礉鍒?remotebox錛岀劧鍚庢妸瀹冮檮鍔犲埌 remotebox 涓婄殑 ~/.ssh/authorized_keys2 鏂囦歡銆傝娉ㄦ剰榪欎釜鏂囦歡鐨勫悕瀛楀拰 RSA 鐨?authorized_keys 鏂囦歡鍚嶄笉鍚屻備竴鏃﹂厤緗畬姣曪紝杈撳叆鎴戜滑鐨?DSA 涓撶敤瀵嗛挜鐨勫瘑鐮佺煭璇氨搴旇鑳界櫥褰曞埌 remotebox錛岃屼笉闇瑕佹垜浠緭鍏ュ湪 remotebox 涓婄湡姝g殑瀵嗙爜銆?/p>

涓嬩竴綃?/span>
姝ゅ埢錛屾偍搴旇宸茬粡鍙互浣跨敤 RSA 鎴栬?DSA 璁よ瘉浜嗭紝浣嗘槸鍦ㄦ瘡涓嬈℃柊榪炴帴鏃訛紝鎮ㄤ粛闇杈撳叆鎮ㄧ殑瀵嗙爜鐭銆傚湪鎴戠殑涓嬩竴綃囨枃绔犻噷錛屾垜浠皢浼氫簡瑙e埌濡備綍浣跨敤 keychain錛屽畠鏄竴涓潪甯告柟渚跨殑 ssh-agent 姣斾互鍓嶆洿鍙潬銆佹洿鏂逛究鑰屼笖浣跨敤璧鋒潵鏇村叿瓚e懗鎬с傚湪姝や箣鍓嶏紝璇峰氨榪戞煡闃呬笅闈㈠垪鍑虹殑鍙傝冭祫鏂欎互浣挎偍鑳借窡涓婅繘搴︺?/p>

鍙傝冭祫鏂?/span>