1<!DOCTYPE html> 2<html> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <link rel="Stylesheet" type="text/css" href="../styles/style.css" /> 6 <title>Cygwin使ç¨</title> 7</head> 8<body> 9<div id="header"> 10 <ul id="top-nav"> 11 <li><a href="../index.html">é¦é¡µ</a></li> 12 <li><a href="index.html">åç±»é¦é¡µ</a></li> 13 </ul> 14</div> 15<div id="cse"></div> 16<div id="main"> 17 18<div class="toc"> 19<ul> 20<li><a href="#toc_1">Cygwin使ç¨</a> 21<ul> 22<li><a href="#toc_1.1">常ç¨è½¯ä»¶å®è£ </a> 23<ul> 24<li><a href="#toc_1.1.1">å®è£ apt-cyg</a> 25<li><a href="#toc_1.1.2">å®è£ 常ç¨å·¥å ·</a> 26<li><a href="#toc_1.1.3">å®è£ pythonç¯å¢</a> 27</ul> 28<li><a href="#toc_1.2">常ç¨å·¥å ·è®¾ç½®</a> 29<ul> 30<li><a href="#toc_1.2.1">Cygwinç»ç«¯</a> 31<li><a href="#toc_1.2.2">bashrc</a> 32<li><a href="#toc_1.2.3">screen/tmux设置</a> 33<li><a href="#toc_1.2.4">~/.vimrc</a> 34<li><a href="#toc_1.2.5">~/.ssh/config</a> 35</ul> 36<li><a href="#toc_1.3">å ¶ä»è®¾ç½®</a> 37<ul> 38<li><a href="#toc_1.3.1">SSH Server</a> 39<li><a href="#toc_1.3.2">crontab</a> 40<li><a href="#toc_1.3.3">nontsec</a> 41</ul> 42<li><a href="#toc_1.4">䏿乱ç 设置</a> 43<li><a href="#toc_1.5">æå·§æ¶é</a> 44<li><a href="#toc_1.6">SSH Agent on Cygwin</a> 45<li><a href="#toc_1.7">Windows Terminal</a> 46<li><a href="#toc_1.8">conEmu</a> 47<li><a href="#toc_1.9">èæ¬æ·»å ssh主æºåèªå¨å®æ</a> 48<ul> 49<li><a href="#toc_1.9.1">å¨etc䏿·»å </a> 50<li><a href="#toc_1.9.2">å¨~/.bashrc䏿·»å </a> 51</ul> 52</ul> 53</ul> 54</div> 55 56<h1 id="toc_1">Cygwin使ç¨</h1> 57 58<p> 59Update: 2013-01-04 60</p> 61 62<ul> 63<li> 64<a href="http://www.cygwin.com/">Cygwin</a> 65 66<li> 67<a href="http://www.redhat.com/services/custom/cygwin/">RedHat Cygwin</a> 68 69<li> 70<a href="KeepassX_SecureCRT.html">KeepassX_SecureCRT</a> 71 72</ul> 73 74<h2 id="toc_1.1">常ç¨è½¯ä»¶å®è£ </h2> 75 76<ul> 77<li> 78å®è£ Cygwinæ¶ï¼åºå®è£ ä¸ï¼wget, tar, gawk, bzip2, nc, xz, openssh 79 80</ul> 81 82<h3 id="toc_1.1.1">å®è£ apt-cyg</h3> 83 84<ul> 85<li> 86ä¿®æ¹x86/x86_64æºãxzåç¼©å æ¯æãsha512sumçapt-cyg:<a href="../files/shell/apt-cyg">apt-cyg</a> 87<pre class="brush: bash"> 88#wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg 89wget http://xstarcd.github.io/wiki/files/shell/apt-cyg -O /usr/local/bin/apt-cyg 90chmod +x /usr/local/bin/apt-cyg 91apt-cyg --help 92cygcheck --help 93# ä¿®æ¹è½¯ä»¶æº 94#apt-cyg --mirror http://mirrors.163.com/cygwin 95#apt-cyg --mirror http://mirrors.aliyun.com/cygwin 96apt-cyg --mirror https://mirrors.kernel.org/sourceware/cygwin/ 97 98# ftp://mirror.mcs.anl.gov/pub/cygwin 99# http://mirrors.163.com/cygwin 100# ftp://ftp.ges.redhat.com/private/releng/cygwin-1.8 101</pre> 102 103<li> 104201308åCygwinçæ¬åæ´ï¼éä¿®æ¹apt-cyg 105 106<ul> 107<li> 108软件æºè·¯å¾åæ´ 109 110<ul> 111<li> 1122013-08-08åCygwinå为x86ãx86_64两个å®è£ å ï¼æºè·¯å¾ä¹æ¹ä¸åè·¯å¾(x86ãx86_64)ï¼å æ¤apt-cygä¸è½½setup.bz2åsetup.iniæ¶åç404é误ã 113 114<li> 115å¨apt-cygå¢å MPathæ¥æ¯æx86ãx86_64çæ¬ã 116 117</ul> 118<li> 119æ·»å xzåç¼©å æ¯æ:ä¿®æ¹apt-cygæ ¹æ®å æä»¶æ©å±åéæ©binzip2æxzæ¥è¿è¡è§£åã 120 121</ul> 122<li> 123cygwin 2.0.0䏿¹ç¨sha512sumæ¿ä»£md5æ ¡éªï¼æ§è¡æ¥<code>cygwin64 MD5 sum did not match, exiting</code>é误 124 125<ul> 126<li> 127ä¿®æ¹apt-cygï¼å°md5sum æ¢æ sha512sum 128 129</ul> 130</ul> 131 132<h3 id="toc_1.1.2">å®è£ 常ç¨å·¥å ·</h3> 133<pre class="brush: bash"> 134# apt-cyg install mandoc cygwin-doc 135apt-cyg install vim screen tmux wget subversion openssh pwgen gzip bzip3 curl rsync bash-completion \ 136 lftp nc tree p7zip connect-proxy util-linux bind-utils inetutils 137</pre> 138 139<h3 id="toc_1.1.3">å®è£ pythonç¯å¢</h3> 140<pre class="brush: bash"> 141apt-cyg install python python-crypto 142</pre> 143 144<ul> 145<li> 146å®è£ easy_install 147 148<ul> 149<li> 150åèï¼<a href="http://atbrox.com/2009/09/21/how-to-get-pipvirtualenvfabric-working-on-cygwin/">http://atbrox.com/2009/09/21/how-to-get-pipvirtualenvfabric-working-on-cygwin/</a> 151<pre class="brush: bash"> 152#wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg 153#sh setuptools-0.6c11-py2.6.egg 154 155apt-cyg install python-setuptools 156easy_install pip 157 158pip install pssh 159# ansible 160apt-cyg python-crypto 161pip install ansible 162#pip install moin 163</pre> 164 165</ul> 166</ul> 167 168<h2 id="toc_1.2">常ç¨å·¥å ·è®¾ç½®</h2> 169 170<h3 id="toc_1.2.1">Cygwinç»ç«¯</h3> 171<ul> 172<li> 173~/.minttyrc 174<pre class="brush:bash"> 175BoldAsFont=no 176Font=YaHei Consolas hybrid 177FontHeight=12
178#BackgroundColour=0,43,53 179BackgroundColour=11,22,33 180ForegroundColour=191,191,191 181FontSmoothing=full 182# å ³éCTRL_+/-/0æ¾å¤§ç¼©å°åè½ï¼é¿å ä¸vimçªå£è°æ´å²çª 183ZoomShortcuts=no 184</pre> 185 186<li> 187é¢è²ãåä½éæ©åæ° 188<pre> 189èæ¯é¢è²ï¼(RGB)0,40,51;æ11,22,33(å°±æ¯è¿ä¸ªWiki页é¢çèæ¯è²) 190åä½é¢è²ï¼(RGB)31,148,150(è¾æ);æ191,191,191 191ç®å½é¢è²ï¼(RGB)255,128,128 192å缩æä»¶é¢è²ï¼(RGB)128,128,0 193 194åä½ï¼Consolas,Courier New,Fixedsys,YaHei Consolas hybrid 195</pre> 196 197<li> 198YaHei Consolas hybrid.1.12åä½ä¸è½½ï¼ 199 200<ul> 201<li> 202<a href="../files/YaHei.Consolas.1.12.7z">YaHei.Consolas.1.12.7z</a> 203 204<li> 205<a href="http://pan.baidu.com/s/1jHu9aHw">ç¾åº¦ç½çä¸è½½ï¼YaHei.Consolas.1.12.7z</a> 206 207</ul> 208</ul> 209 210<h3 id="toc_1.2.2">bashrc</h3> 211<ul> 212<li> 213~/.bashrc 214<pre class="brush:bash"> 215alias grep='grep --color' # show differences in colour 216alias egrep='egrep --color=auto' # show differences in colour 217alias fgrep='fgrep --color=auto' # show differences in colour 218alias ls='ls -hF --color=tty' # classify files in colour 219alias ll='ls -la' # long list 220alias la='ls -A' # all but . and .. 221alias l='ls -CF' # 222 223# å ³éControlMaster autoï¼é¿å sshè¿æ¥æ¶å 䏿¯æunix-socketæ¥å¦ä¸é误é®é¢ï¼ 224# mm_receive_fd: no message header 225# process_mux_new_session: failed to receive fd 0 from slave 226alias ssh="ssh -S none" 227 228# å°å¸¸ç¨Windowså½ä»¤è¾åºè½¬æ¢ä¸ºutf8ï¼è§£å³Windowsèªæå½ä»¤æ¾ç¤ºä¹±ç é®é¢ 229# å®è£ iconvå·¥å ·: apt-cyg install libiconv 230_runiconv () { _cmd=$1;shift;$_cmd $* 2>&1|iconv -f gbk -t utf8; } 231alias ping='_runiconv ping' 232alias ifconfig='_runiconv ipconfig' 233alias netstat='_runiconv netstat' 234alias tracert='_runiconv tracert' 235alias route='_runiconv route' 236</pre> 237 238</ul> 239 240<ul> 241<li> 242~/.bash_profile 243<pre class="brush:bash"> 244PS1="[\w]$" 245#彩è²çPS1ä¼é æå½ä»¤ç¼è¾æ¶å æ å®ä½é误 246#PS1="\e[0;32m[\u@\h \W]\$ \e[m" 247</pre> 248 249</ul> 250 251<h3 id="toc_1.2.3">screen/tmux设置</h3> 252 253<pre class="brush: bash"> 254# 255# ~/.screenrc 256# 257# å¯å¨æ¶ä¸æ¾ç¤ºæ¬¢è¿å±å¹ 258startup_message off 259 260# å®ä¹screençåè½é®ä¸ºCtrl-Aãåç»ç«¯è¾å ¥Ctrl-Aæ¶åºæ Ctrl-A aã 261#escape ^Aa 262 263# å±å¹ç¼å²åº 1024 è¡ã 264defscrollback 1024 265 266# æ¾ç¤ºçªå£å表 267caption always "%-w%{= BW}%50>%n %t%{-}%+w%<" 268 269# æ Ctrl-A w æ Ctrl-A Ctrl-W æ¾ç¤ºçªå£å表 270bind w windowlist -b 271#bind ^w windowlist -b 272 273#å¨ä½¿ç¨screenè¿ç¨ä¸ï¼ç»å¸¸ä¼éå°âéªå±âçé®é¢ï¼è¿æ¯å¯ä»¥å ³æçã 274#å¿«éå ³æï¼ä¹å°±æ¯å è¾å ¥CTRL + aï¼åè¾å ¥CTRL + gã 275#æ°¸ä¹ å ³éï¼ä¿®æ¹/etc/screenrc å å ¥ 276vbell off 277 278</pre> 279 280<ul> 281<li> 282~/.tmux.conf 283<pre class="brush:bash"> 284# ~/.tmux.conf 285 286# prefix key (Ctrl+a) 287set -g prefix ^a #set -g prefix C-a 288unbind ^b #unbind C-b 289bind a send-prefix # prefix key (Ctrl+a) 290 291# split window 292unbind '"' 293unbind % 294bind - splitw -v # vertical split (prefix -) 295bind | splitw -h # horizontal split (prefix |) 296 297# select pane 298bind k selectp -U # above (prefix k) bind-key k select-pane -U 299bind j selectp -D # below (prefix j) 300bind h selectp -L # left (prefix h) 301bind l selectp -R # right (prefix l) 302 303# copy mode 304# enter copy mode (prefix Escape) 305bind Escape copy-mode 306# paste buffer (prefix Ctrl+p) 307bind ^p pasteb 308#bind-key -T copy-mode C-Space send-keys -X begin-selection 309 310# reload config (prefix r) 311bind r source ~/.tmux.conf \; display "Configuration reloaded!" 312 313#-- statusbar --# 314set -g status-interval 1 315set -g status-keys vi 316 317setw -g mode-keys vi 318setw -g automatic-rename off 319 320#set-option -g status-style bg=cyan 321 322# statusbar 323#set-window-option -g window-status-current-style fg=colour166,bg=#c0c0c0 324set-window-option -g window-status-current-style fg=colour166,bg=colour222 325</pre> 326 327</ul> 328 329<h3 id="toc_1.2.4">~/.vimrc</h3> 330 331<ul> 332<li> 333vim没æè¯æ³é«äº®ï¼éå è½½åºæ¬è®¾ç½® 334<pre class="brush: bash"> 335cd /usr/share/vim && cp vim74/vimrc_example.vim vimrc 336</pre> 337 338</ul> 339 340<ul> 341<li> 342.vimrc设置 343 344</ul> 345 346<p> 347详è§ï¼<a href="../vim/vimrc.html">vimrc</a> 348</p> 349<pre class="brush: bash"> 350" ~/.vimrc 351set mouse=c 352set nobackup 353 354" set paste 355 356set fileformats=unix,dos,mac 357set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 358set encoding=utf-8 359" set termencoding=cp936 360let &termencoding = &encoding 361language messages en_US.UTF-8 362"language messages zh_CN.UTF-8 363 364" colo murphy 365 366" tab 367set tabstop=4 368set cindent shiftwidth=4 369set autoindent shiftwidth=4 370" TAB -> Space 371set expandtab 372 373</pre> 374 375<h3 id="toc_1.2.5">~/.ssh/config</h3> 376<pre class="brush: bash"> 377#ssh_config 378#~/.ssh/config 379IdentitiesOnly yes 380ServerAliveInterval 60 381GSSAPIAuthentication no 382 383Host m* 384 Port 22 385 User root 386 ControlMaster auto 387 ControlPath ~/.ssh/master-%r@%h:%p 388 #ProxyCommand connect-proxy -S 127.0.0.1:2223 %h %p 389Host mNagios 390 Hostname 172.16.16.150 391 392</pre> 393 394 395<h2 id="toc_1.3">å ¶ä»è®¾ç½®</h2> 396 397<h3 id="toc_1.3.1">SSH Server</h3> 398 399<ul> 400<li> 401OSä¿®æ¹ç¯å¢åéï¼pathå¢å c:/cygwin/bin 402 403<li> 404OSå¢å ç¯å¢åéï¼CYGWIN=ntsec tty 405 406<li> 407Cygwinå®è£å¿ è¦çå¥ä»¶ï¼OpenSSHï¼cygrunsrv 408 409<li>
410Change permissions and ownership on some files: 411<pre class="brush: bash"> 412# 以ä¸ä»£ç 没æµè¯è¿ï¼æ ç¨ 413cd /; chmod -R og-w . 414chmod og+w /tmp 415touch /var/log/sshd.log 416chown system:system /var/log/sshd.log /var/empty /etc/ssh_h* 417chmod 755 /var/empty 418</pre> 419 420<li> 421Cygwinè¨å®OpenSSHï¼ 422<pre class="brush: bash"> 423 ssh-host-config 424</pre> 425<pre> 426 Should privilege separation be used? (yes/no) ï¼yes 427 Should this script create a local user 'sshd' on this machine? (yes/no) ï¼yes 428 Do you want to install sshd as service? (yes/no) ï¼yes 429 Default is "ntsec" . CYGWIN=ntsec tty 430</pre> 431 432<li> 433å¯å¨OpenSSHï¼net start sshd 434<pre class="brush: bash"> 435cygrunsrv -S sshd 436</pre> 437 438<li> 439忢OpenSSHï¼net stop sshd 440 441</ul> 442 443 444<h3 id="toc_1.3.2">crontab</h3> 445 446<ul> 447<li> 448å¨Windowsä¸å®è£ ç³»ç»æå¡ cronï¼å¼æºå³è¿è¡ã 449<pre class="brush: bash"> 450cygrunsrv -I cron -p /usr/sbin/cron -a -D 451</pre> 452 453<li> 454å¯å¨æå¡ 455<pre class="brush: bash"> 456cygrunsrv -S cron 457</pre> 458 459</ul> 460 461<h3 id="toc_1.3.3">nontsec</h3> 462<p> 463è¿å¨ Cygwin ä¸å建çæä»¶ï¼å ¶ä»ç®¡çåä¸å¯åï¼æ¯æè°ç ntsec å¨èµ·ä½ç¨ãéè¿ NTFS çæéè®¾ç½®ï¼æ¨¡æ UNIX çæéãå¯ä»¥éè¿ CYGWIN ç¯å¢åéä¿®æ¹ãå¦ï¼ 464</p> 465<pre class="brush: bash"> 466export CYGWIN="nontsec nosmbntsec" 467</pre> 468 469<h2 id="toc_1.4">䏿乱ç 设置</h2> 470 471<p> 472**<strong>è¥åå¨ä¸æé®é¢æè¿è¡ä»¥ä¸è®¾ç½®ã</strong>** 473</p> 474 475<ul> 476<li> 477Rethat Cygwinå®è£ åç®å½ä¸æå³æ£å¸¸ï¼ä»¥ä¸è®¾ç½®ä¸ä¸å®éè¦ã 478 479<li> 480git logå½ä»¤ä¸åºç°ä¹±ç ï¼å¯ä»¥éè¿ä»¥ä¸è®¾ç½®è§£å³ 481 482<li> 483~/.bashrc 484<pre class="brush: bash"> 485export SVN_EDITOR=vim 486 487# Redhat Cygwin䏿ªå以ä¸è®¾ç½®ï¼ä¸ææ£å¸¸ 488alias ls='ls --color --show-control-chars' 489# git logä¿®æ¹è¿ä¸ªè®¾ç½®å坿¾ç¤ºä¸æcommit log 490#export LESSCHARSET=latin1 491export LESSCHARSET=UTF-8 492alias less='/bin/less -r' 493#export LC_ALL=zh_CN.UTF-8 494#export LC_CTYPE=zh_CN.UTF-8 495#export LANG=zh_CN.UTF-8 496#export OUTPUT_CHARSET="GBK" 497 498#stty cs8 -istrip 499#stty pass8 500 501export CYGWIN="nontsec nosmbntsec" 502 503</pre> 504 505</ul> 506 507<ul> 508<li> 509~/.inputrc 510<pre class="brush: bash"> 511# Allow 8-bit input/output 512set meta-flag on 513set convert-meta off 514set input-meta on 515set output-meta on 516</pre> 517 518</ul> 519 520<h2 id="toc_1.5">æå·§æ¶é</h2> 521 522<ul> 523<li> 524Howto get version info? 525<pre class="brush: bash"> 526cygcheck -c cygwin 527</pre> 528 529<li> 530æ¥çç³»ç»ä¿¡æ¯ã软件å 531<pre class="brush:bash"> 532cygcheck -h #å¸®å© 533cygcheck -s #sysinfo 534cygcheck -l #å·²å®è£ å å表 535cygcheck -c #ååºå¹¶æ ¡éªå·²å®è£ çå 536cygcheck -p vim #ä»cygwin.comæºæ¥è¯¢å 537</pre> 538 539<li> 540ç»curlå®è£ CA Certificates 541<pre class="brush: bash"> 542curl http://curl.haxx.se/ca/cacert.pem > /usr/ssl/certs/ca-bundle.crt 543</pre> 544 545<li> 546忥Windowsç¨æ·åç» 547<pre class="brush:bash"> 548mkpasswd -l > /etc/passwd 549mkgroup -l > /etc/group 550 551# 妿æDomainçè¯ï¼éè¦å ä¸-d domainname 552</pre> 553 554<li> 555设置Cygwin/minttyåä½åå¤§å° 556 557<ul> 558<li> 559çé¢ä¸è®¾ç½®ï¼å³é®èå->Options->Textï¼ç¶åéæ©ä½ åæ¬¢çåä½å大å°ã 560 561<li> 562Windows䏿äºåä½ä¸ä¼ååºï¼å¯å¨é ç½®æä»¶ï¼<code>~/.minttyrc</code>ä¸ç´æ¥æå®ï¼ 563<pre> 564BoldAsFont=no 565#Font=Courier New 566Font=YaHei Consolas hybrid 567FontHeight=12 568</pre> 569 570</ul> 571<li> 572ç»Cygwinæ·»å more/col/whereisçå½ä»¤ï¼å®è£ util-linuxå :<code>apt-cyg install util-linux</code> 573 574<li> 575ç»Cygwinå®è£ digãiconvãtelnet/ftp:<code>apt-cyg install bind-utils libiconv inetutils</code> 576 577<ul> 578<li>
579æ£æ¥ç³»ç»ä¸å·²è®¾ç½®å¥½DNS: <code>ipconfig /all</code> 580 581</ul> 582<li> 583å¾å°Windowsæ ¼å¼çè·¯å¾å? 584<pre class="brush: bash"> 585cygpath -d -m "`pwd`" 586</pre> 587 588<li> 589ç¨Exploreræå¼å½åç®å½:open.sh 590<pre class="brush:bash"> 591#!/bin/sh 592#/usr/local/bin/open 593d=$1;[ -z "$d" ] && d=$(pwd) 594d=$(cd "$d" > /dev/null 2>&1;pwd) 595Explorer /e,"$(cygpath -d -w $d)" 596</pre> 597 598<li> 599Cygwin error: <code>-bash: fork: retry: Resource temporarily unavailable</code> 600 601<ul> 602<li> 603<a href="http://stackoverflow.com/questions/9300722/cygwin-error-bash-fork-retry-resource-temporarily-unavailable">http://stackoverflow.com/questions/9300722/cygwin-error-bash-fork-retry-resource-temporarily-unavailable</a> 604 605<li> 606<a href="http://cygwin.wikia.com/wiki/Rebaseall">http://cygwin.wikia.com/wiki/Rebaseall</a> 607 608<li> 609é误ç°è±¡ 610<pre> 611-bash-4.1$ wc m1.txt 612 3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) != child(0x38D000) 613 -bash: fork: retry: Resource temporarily unavailable 614 2013930 4027950 74968256 m1.txt 615</pre> 616 617<li> 618å¤çåæ³ 619<pre> 620rkosegi's Answer seems to be working for everyone (myself included). But, just so you don't have to follow the daisy chain of links: 621 622(assuming Cygwin is installed at C:\cygwin): 623 6241.Open Task Manager and close any processes that look to be Cygwin related. 6252.Open C:\Cygwin\bin in Windows Explorer 6263.Verify that dash.exe, ash.exe, rebase.exe, and rebaseall exist in this folder 627 - If any of them are missing, re-run Cygwin setup and select the dash, ash, and rebase packages 6284.right-click your C:\Cygwin folder, uncheck Read-only (if its checked), and press OK. 629 - When an error about not being able to switch some files comes up, select "Ignore All". Wait for this process to complete. 6305.Browse to C:\Cygwin\bin in Windows Explorer 6316.Right click dash.exe and click "Run as Administrator". A command Prompt should appear with nothing but a $ 6327.Type /usr/bin/rebaseall -v, hit enter, and wait for the process to complete. 633 - If you get errors about Cygwin processes running, try Step 1 again. If that still doesn't work, Restart your computer into safe mode and try these steps again. 6348.Try opening Cygwin again. 635 636This process worked for me. I hope it works for you guys too. 637 638Source: http://cygwin.wikia.com/wiki/Rebaseall 639</pre> 640 641</ul> 642</ul> 643 644<h2 id="toc_1.6">SSH Agent on Cygwin</h2> 645 646<p> 647ssh-agent å¯å¨åï¼ä¼è®¾ç½® SSH_AUTH_SOCK å SSH_AGENT_PID 两个ç¯å¢åéã 648</p> 649 650<p> 651ssh éè¿æ£æµ SSH_AUTH_SOCK å SSH_AGENT_PID 两个ç¯å¢åé夿æ¯å¦åå¨ ssh-agent åå°è¿ç¨ï¼å¦æåå¨åä½¿ç¨ ssh-agent 宿èªå¨è®¤è¯ï¼å¦åæç¤ºç¨æ·è¾å ¥å¯ç ã 652</p> 653 654<p> 655ssh-agentå¯å¨è¾åºå 容为ç¯å¢åæ°è®¾ç½®èæ¬ï¼é以evalæsourceæ¹å¼æ§è¡æ¥å å ¥ç¯å¢åæ°ã 656</p> 657<pre> 658ssh-agent.exe -s 659SSH_AUTH_SOCK=/tmp/ssh-GYP4AmeZ5LP6/agent.1272; export SSH_AUTH_SOCK; 660SSH_AGENT_PID=4536; export SSH_AGENT_PID; 661echo Agent pid 4536; 662</pre> 663 664<ul> 665<li> 666å¨~/.bash_profile䏿·»å èªå¨å¯å¨ã忢ssh-agent代ç 667 668</ul> 669<p> 670å®ç°å¦ä¸åè½ï¼ 671</p> 672<ol> 673<li> 674æå¼Cygwinæ¶è¥æ²¡æssh-agentè¿ç¨ï¼åèªå¨å¯å¨ï¼è¥å·²æssh-agentè¿ç¨ï¼åä¸åéå¤å¯å¨ï¼ 675 676<li> 677å ³éCygwinæ¶ï¼æ£æ¥è¥æ¯æåä¸ä¸ªCygwinçªå£åèªå¨å ³éssh-agentï¼è¥è¿æå ¶å®Cygwinçªå£åä¸å ³éã 678 679<li> 680å ³éææCygwinçªå£ï¼ä¹åä¿åçkeyå°ä¸åææã 681 682<li> 683å¤ä¸ªçªå£åå ±ç¨åssh-agentã 684<pre class="brush:bash"> 685# Add to ~/.bash_profile 686# start_stop_ssh_agent 687SSH_ENV=$HOME/.ssh/ssh-agent-env 688function stop_ssh_agent { 689 local bash_proccess_num 690 bash_proccess_num=$(ps ef|grep /usr/bin/bash|grep -v grep|wc -l) 691 echo "bash process number=$bash_proccess_num" 692 if [ "$bash_proccess_num" -lt 3 ];then 693 echo "Stop all ssh-agent process." 694 ps ef|grep '/usr/bin/ssh-agent'|grep -v grep|awk '{print $1}'|xargs -r kill 695 else 696 echo "keep ssh-agent process." 697 fi 698 read test 699} 700function start_ssh_agent { 701 if [ -f "${SSH_ENV}" ]; then 702 . ${SSH_ENV} > /dev/null 703 ps ef|grep '/usr/bin/ssh-agent'|grep -v grep >/dev/null 704 if [ "$?" = "0" ];then 705 echo "ssh-agent(pid:$SSH_AGENT_PID) is running." 706 return 0 707 fi 708 fi 709 echo "Initialising new SSH agent..." 710 #$TMPDIR/sshâXXXXXXXXXX/agent.<ppid> 711 /usr/bin/ssh-agent -s -a /tmp/ssh-agent.sock | sed 's/^echo/#echo/' > ${SSH_ENV} \ 712 && echo "start ssh-agent succeeded." \ 713 && chmod 600 ${SSH_ENV} \ 714 && . ${SSH_ENV} > /dev/null 715 #&& /usr/bin/ssh-add \ 716} 717start_ssh_agent 718#trap "[ \$(ps -ef|grep mintty\$|wc -l) -lt 2 ] && kill $SSH_AGENT_PID" 0 719#trap "stop_ssh_agent" 0 720</pre> 721 722</ol> 723 724<ul> 725<li> 726MAC OSçæ¬ 727<pre class="brush:bash"> 728# Add to ~/.bash_profile 729# start_stop_ssh_agent 730SSH_ENV="$HOME/.ssh/ssh-agent-env" 731SSH_SOCK="/tmp/ssh-agent-$(id -un).sock" 732function stop_ssh_agent { 733 local bash_proccess_num 734 bash_proccess_num=$(ps ef|grep /usr/bin/bash|grep -v grep|wc -l) 735 echo "bash process number=$bash_proccess_num" 736 if [ "$bash_proccess_num" -lt 3 ];then 737 echo "Stop all ssh-agent process." 738 ps ef|grep '/usr/bin/ssh-agent'|grep -v grep|awk '{print $1}'|xargs -r kill 739 read prompt 740 else 741 echo "keep ssh-agent process." 742 fi 743} 744function start_ssh_agent { 745 if [ -f "$SSH_ENV" ]; then 746 . $SSH_ENV > /dev/null 747 ps ef|grep "$SSH_AGENT_PID .* /usr/bin/ssh-agent" >/dev/null 748 if [ "$?" = "0" ];then 749 echo "ssh-agent(pid:$SSH_AGENT_PID) is running." 750 return 0 751 fi 752 fi 753 echo "Initialising new SSH agent..." 754 #$TMPDIR/sshâXXXXXXXXXX/agent.<ppid> 755 rm -f "$SSH_SOCK" 756 /usr/bin/ssh-agent -s -t 3600 -a "$SSH_SOCK" | sed 's/^echo/#echo/' > $SSH_ENV \ 757 && chmod 600 ${SSH_ENV} \ 758 && . ${SSH_ENV} > /dev/null 759 #&& /usr/bin/ssh-add \ 760} 761start_ssh_agent 762#trap "[ \$(ps -ef|grep mintty\$|wc -l) -lt 2 ] && kill $SSH_AGENT_PID" 0 763trap "stop_ssh_agent" 0 764</pre> 765 766</ul> 767 768 769<ul> 770<li> 771ssh-add 772 773</ul> 774 775<p> 776ssh-addçä½ç¨æ¯ææå®çç§é¥æ·»å å° ssh-agent æç®¡ççä¸ä¸ª session å½ä¸ã 777</p> 778 779<p> 780ssh-agent æ¯ä¸ä¸ªç¨äºåå¨ç§é¥çä¸´æ¶æ§ç session æå¡ï¼ä¹å°±æ¯è¯´å½ä½ éå¯ä¹åï¼ssh-agent æå¡ä¹å°±éç½®äºã 781</p> 782 783<pre class="brush:bash"> 784ssh-add ~/.ssh/id_rsa 785[enter your password] 786</pre> 787 788<ul> 789<li> 790keychain 791 792<ul> 793<li> 794<a href="http://www.funtoo.org/Keychain">http://www.funtoo.org/Keychain</a> 795<pre> 796sdesc: "Key manager for OpenSSH" 797ldesc: "Keychain is an OpenSSH key manager, typically run from 798~/.bash_profile. When keychain is run, it checks for a running 799ssh-agent, otherwise it starts one. It saves the ssh-agent environment 800variables to ~/.keychain/$HOSTNAME-sh, so that subsequent logins 801and non-interactive shells such as cron jobs can source the file and 802make passwordless ssh connections. In addition, when keychain runs, it 803verifies that the key files specified on the command-line are known to 804ssh-agent, otherwise it loads them, prompting you for a password if 805necessary" 806</pre> 807 808<li> 809~/.bash_profile: 810<pre> 811eval `keychain --eval --agents ssh id_dsa` 812</pre> 813 814</ul> 815</ul> 816 817<h2 id="toc_1.7">Windows Terminal</h2> 818 819<ul> 820<li> 821Windows Terminalçé®å设置ï¼<a href="https://cloud.tencent.com/developer/article/1746621">https://cloud.tencent.com/developer/article/1746621</a> 822 823<li> 824<a href="https://learn.microsoft.com/zh-cn/windows/terminal/">https://learn.microsoft.com/zh-cn/windows/terminal/</a> 825<pre> 826Ctrl + Shift + T/Nï¼æ°å»ºæ ç¾/çªå£ 827 828Windows Terminalæåçªæ ¼ï¼ 829Alt + Shift + Dï¼å¤å¶å¹¶æå(ææé¿è¾¹) 830Alt + Shift + +ï¼å·¦å³æå 831Alt + Shift + -ï¼ä¸ä¸æå 832Alt + Shift + ä¸ä¸å·¦å³ï¼è°æ´çªæ ¼å¤§å° 833Alt + ä¸ä¸å·¦å³ï¼åæ¢çªæ ¼ 834Alt + Shift + Wï¼å ³éå½åçªæ ¼ 835 836æç´¢ï¼Ctrl + Shift + F 837æ»å±ï¼Ctrl + Shift + ä¸ä¸ 838缩æ¾ï¼Ctrl + +/-ï¼Ctrl + é¼ æ æ»è½® 839 840å¤å¶ï¼Ctrl + Shift + C
841ç²è´´ï¼Ctrl + Shift + V 842 843设置ï¼Ctrl + , 844</pre> 845 846<li> 847å¨ Windows Terminal ä¸ä½¿ç¨ Cygwin å½ä»¤è¡æ Git Bash:<a href="https://leo3418.github.io/zh/2020/05/24/cygwin-git-bash-in-wt.html">https://leo3418.github.io/zh/2020/05/24/cygwin-git-bash-in-wt.html</a> 848 849<li> 850å®è£ Windows Terminal:å¨Microsoft Storeæç´¢âTerminalâå®è£ ï¼ä¸è¦å®è£ Previewçæ¬ï¼ã 851 852<li> 853Windows ç»ç«¯æç¤ºä¸æå·§: <a href="https://learn.microsoft.com/zh-cn/windows/terminal/tips-and-tricks">https://learn.microsoft.com/zh-cn/windows/terminal/tips-and-tricks</a> 854 855<li> 856Windows Terminalé ç½®æä»¶è¯´æï¼<a href="https://learn.microsoft.com/zh-cn/windows/terminal/customize-settings/startup#default-terminal-application">https://learn.microsoft.com/zh-cn/windows/terminal/customize-settings/startup#default-terminal-application</a> 857 858<li> 859å¨Windows Terminalä¸è®¾ç½®Cygwinï¼ 860 861<ul> 862<li> 863设置->æ·»å æ°é ç½®æä»¶ï¼ 864 865<ul> 866<li> 867å½ä»¤è¡æ¹å¼ä¸ï¼<code>C:\cygwin64\bin\bash.exe -i -l</code> 868 869<li> 870å½ä»¤è¡æ¹å¼äºï¼<code>C:\cygwin64\Cygwin.bat</code> 871 872<li> 873bashå¨ç»å½ç¶ææä¼å è½½profileãbashrcï¼éè¦ä½¿ç¨<code>-i -l</code>åæ°ï¼å¯å¨å½ä»¤è¡ï¼ 874 875</ul> 876<li> 877å é¤crtl+vãctrl+cçé®è®¾ç½®ï¼è®¾ç½®->æä½ä¸å é¤(ç»ç«¯ä¸éè¦ä½¿ç¨è¿ä¸¤ä¸ªç»åé®)ã 878 879<li> 880å¼å¯é¼ æ å³é®èå(ä¸å¼å¯å³é®ç´æ¥ä¸ºç²è´´) 881 882<ul> 883<li> 884æä½Shifté®åå»ä¸æèåä¸ç设置ï¼ä¼ç¨ç¼è¾å¨æå¼settings.jsonæä»¶ï¼å¨profiles->deflaults䏿·»å <code>"experimental.rightClickContextMenu": true</code>ï¼ 885<pre class=brush:bash> 886... 887 "profiles": 888 { 889 "defaults": { 890 "experimental.rightClickContextMenu": true, 891 }, 892... 893 - æä½ Alt å¹¶åå»ä¸æèåä¸çâ设置âæé®ï¼æ¥çé»è®¤è®¾ç½® 894</pre> 895 896</ul> 897</ul> 898</ul> 899 900<h2 id="toc_1.8">conEmu</h2> 901 902<ul> 903<li> 904<a href="https://conemu.github.io/">https://conemu.github.io/</a> 905 906<li> 907Cygwinç³»åï¼åï¼ï¼æè ¾ç»ç«¯1:<a href="https://zhuanlan.zhihu.com/p/99963508">https://zhuanlan.zhihu.com/p/99963508</a> 908 909</ul> 910 911<p> 912ConEmuæ¯ä¸æ¬¾ä¼ç§ç弿ºç»ç«¯ï¼é¡¹ç®å°å<a href="https://conemu.github.io">https://conemu.github.io</a> 913</p> 914 915<p> 916宿¯æ··ååçï¼é¦è¦æ¯æWindows Consoleåè½ï¼å¯ç使¯conhostçå¢å¼ºçæ¬ï¼åæ¶ä¹é¨åå°æ¯æptyï¼å ·å¤ANSI转ä¹åºåç´æ¥è§£æè½åï¼æ»ä½ä¸æ¯conhost+Minttyçå ¨è½éæã 917</p> 918 919<p> 920主è¦åè½ç¹æ§å æ¬ï¼ 921</p> 922<pre> 923夿 ç¾é¡µã夿 ç¾é¡µã夿 ç¾é¡µï¼éè¦äºæ 说3éï¼å¹¶ä¸æ¯æå¤ç§å¸å±æ¹å¼ï¼ 924ä¸åæ ç¾é¡µç¬ç«é ç½®Taskï¼ä¹å°±æ¯è¿è¡ä¸åçå½ä»¤è¡ç¨åºï¼ç¹å«æ¯shellï¼Taskæ¯æåååç»ååé å¿«æ·é®ï¼ 925çé¢ç°ä»£åï¼ææ ç¾é¡µãå¿«æ·èåãæ§å¶å°åºãç¶ææ ãæ»å¨æ¡ï¼ 926æ¯æè¿æ¥å°å¤ç§ç±»åå½ä»¤è¡ç¨åºç¯å¢ï¼CygwinãmsysãWSLé½ä¸å¨è¯ä¸ï¼ 927å¾å½¢åé ç½®æ¹å¼ï¼æ¯ä¸é¨å齿¯æä¸ªæ§åé ç½®ï¼ææé 置项ä¿åå°æä»¶ConEmu.xmlï¼ 928æ¯æéæå°å ¶ä»ç¨åºçé¢ä¸ï¼æ¯å¦æä»¶ç®¡çå¨Explorerï¼ 929æ¯æå符å ç²ãæä½ãä¸å线ãéªçãå忝è²ç飿 ¼ï¼ 930å ¨é¢æ¯æUnicodeï¼æ¯æANSI X3.64æ ååxterm256è²ï¼ 931é带å符çé¢çææ¬ç®¡çå¨Far Manageråå ¶æä»¶ï¼ 932è½è¿è¡å¨Windows 2000å以ä¸çæ¬çWindowsç³»ç»ï¼å¼ç®±å³ç¨ã 933</pre> 934 935<h2 id="toc_1.9">èæ¬æ·»å ssh主æºåèªå¨å®æ</h2> 936 937<h3 id="toc_1.9.1">å¨etc䏿·»å </h3> 938 939<ul> 940<li> 941/etc/bash_completion.d/ssh 942<pre class="brush:bash"> 943_ssh() 944{ 945 local cur prev opts 946 COMPREPLY=() 947 cur="${COMP_WORDS[COMP_CWORD]}" 948 prev="${COMP_WORDS[COMP_CWORD-1]}" 949 opts=$(grep '^Host' ~/.ssh/config ~/.ssh/config.d/* 2>/dev/null | grep -v '[?*]' | cut -d ' ' -f 2-) 950 951 COMPREPLY=( $(compgen -W "$opts" -- ${cur}) ) 952 return 0 953} 954complete -F _ssh ssh scp sftp rsync 955</pre> 956 957</ul> 958 959<pre> 960. /etc/bash_completion.d/ssh 961</pre> 962 963<h3 id="toc_1.9.2">å¨~/.bashrc䏿·»å </h3> 964 965<pre class="brush:bash"> 966# SSH/SCP主æºåèªå¨è¡¥å ¨ 967# ---------------------------------------------------------------------------- 968_complete_ssh_hosts() { 969 local cur prev config_hosts known_hosts 970 local ssh_hosts_ts ssh_config_ts 971 COMPREPLY=() 972 cur="${COMP_WORDS[COMP_CWORD]}" 973 prev="${COMP_WORDS[COMP_CWORD-1]}" 974 ssh_config=$(readlink -f "$HOME/.ssh/config") 975 ssh_hosts_file="$HOME/.ssh/ssh_hosts" 976 # 夿configæ´æ° 977 if [ -f "$ssh_hosts_file" ];then 978 ssh_hosts_ts=$(stat -c %Y "$ssh_hosts_file") 979 ssh_config_ts=$(stat -c %Y "$ssh_config") 980 if [ $ssh_config_ts -gt $ssh_hosts_ts ];then 981 ssh_hosts= 982 rm -f "$ssh_hosts_file" 983 fi 984 fi 985 # æ´æ°ssh_hosts 986 if [ -z "$ssh_hosts" ];then 987 if [ -f "$ssh_hosts_file" ];then 988 ssh_hosts=$(cat "$ssh_hosts_file") 989 else 990 if [[ -f "$ssh_config" ]]; then 991 config_hosts=$(grep -i '^Host' "$ssh_config" | grep -v '[*?]' | cut -d ' ' -f 2-) 992 else 993 config_hosts="" 994 fi 995 if [[ -f "$HOME/.ssh/known_hosts" ]]; then 996 known_hosts=$(cut -d ' ' -f 1 "$HOME/.ssh/known_hosts" | cut -d ',' -f 1 | sed -e 's/\[\(.*\)\]:.*/\1/') 997 else 998 known_hosts="" 999 fi
1000 ssh_hosts="${config_hosts} ${known_hosts}" 1001 export ssh_hosts="$ssh_hosts" 1002 echo "$ssh_hosts" > "$ssh_hosts_file" 1003 fi 1004 fi 1005 1006 # 妿å½åè¯ä»¥@å¼å¤´ï¼è¡¥å ¨ç¨æ·ååç主æºå 1007 if [[ ${cur} == *@* ]]; then 1008 local userhost=${cur%%@*} 1009 local curhost=${cur#*@} 1010 COMPREPLY=( $(compgen -W "${ssh_hosts}" -P "${userhost}@" -- "${curhost}") ) 1011 else 1012 COMPREPLY=( $(compgen -W "${ssh_hosts}" -- "${cur}") ) 1013 fi 1014 return 0 1015} 1016 1017# 为sshåscpå½ä»¤æ³¨åè¡¥å ¨å½æ° 1018complete -F _complete_ssh_hosts ssh scp sftp rsync 1019# ---------------------------------------------------------------------------- 1020</pre> 1021 1022</div> 1023<div id="footer"> 1024<p> 1025© 2012 - 2021 XStar 1026 | <a href="http://code.google.com/p/vimwiki/" title="vimwiki">Powerby:Vimwiki</a> 1027 | <a href="http://kwiki.github.io" title="ä¸è¿">Style:ä¸è¿</a> 1028 | <a href="../index.html">é¦é¡µ</a> 1029 | <a href="index.html">åç±»é¦é¡µ</a> 1030 | <a href="../SiteMap.html">ç«ç¹å°å¾</a> 1031</p> 1032</div>
1033<script type="text/javascript">var vimwiki_rootpath="../";</script>
vendor: 1 bytes, line 1033
1033
1034<script type="text/javascript" src="https://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
vendor: 1 bytes, line 1034
1034
1035<script type="text/javascript" src="../scripts/vimwiki.js"></script>
1035 1036</body> 1037</html> 1038
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.