Mercurial > hgbook
changeset 370:47830e17cd00
more collab.tex
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Dec 2008 02:34:26 +0900 |
parents | 73aa295a40da |
children | 3f9f9b087109 |
files | ja/collab.tex ja/todo.txt |
diffstat | 2 files changed, 205 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/ja/collab.tex Sun Dec 07 14:18:38 2008 +0900 +++ b/ja/collab.tex Mon Dec 08 02:34:26 2008 +0900 @@ -609,123 +609,204 @@ \section{\hgcmd{serve}$B$K$h$kHs8x<0$J6&M-(B} \label{sec:collab:serve} -Mercurial's \hgcmd{serve} command is wonderfully suited to small, -tight-knit, and fast-paced group environments. It also provides a -great way to get a feel for using Mercurial commands over a network. +%Mercurial's \hgcmd{serve} command is wonderfully suited to small, +%tight-knit, and fast-paced group environments. It also provides a +%great way to get a feel for using Mercurial commands over a network. + +Mercurial$B$N(B\hgcmd{serve}$B%3%^%s%I$O!$>.5,LO$G6[L)$J3+H/%Z!<%9$NB.$$%0%k!<(B +$B%W4D6-$K$H$F$bE,$7$F$$$k!%(BMercurial$B%3%^%s%I$r%M%C%H%o!<%/1[$7$K;H$&AG@2(B +$B$i$7$5$rBN46$G$-$k$@$m$&!%(B -Run \hgcmd{serve} inside a repository, and in under a second it will -bring up a specialised HTTP server; this will accept connections from -any client, and serve up data for that repository until you terminate -it. Anyone who knows the URL of the server you just started, and can -talk to your computer over the network, can then use a web browser or -Mercurial to read data from that repository. A URL for a -\hgcmd{serve} instance running on a laptop is likely to look something -like \Verb|http://my-laptop.local:8000/|. +%Run \hgcmd{serve} inside a repository, and in under a second it will +%bring up a specialised HTTP server; this will accept connections from +%any client, and serve up data for that repository until you terminate +%it. Anyone who knows the URL of the server you just started, and can +%talk to your computer over the network, can then use a web browser or +%Mercurial to read data from that repository. A URL for a +%\hgcmd{serve} instance running on a laptop is likely to look something +%like \Verb|http://my-laptop.local:8000/|. + +$B%j%]%8%H%jFb$G(B\hgcmd{serve}$B%3%^%s%I$r5/F0$9$k$H!$$9$0$5$^FCJL$J(BHTTP$B%5!<%P(B +$B$,N)$A>e$2$i$l$k!%$3$l$O$"$i$f$k%/%i%$%"%s%H$+$i$N@\B3$r<u$1F~$l!$%j%]%8(B +$B%H%j$N%G!<%?$r%5!<%S%9$9$k!%5/F0$7$?%5!<%P$N(BURL$B$rCN$C$F$$$k?M$d$"$J$?$N%3(B +$B%s%T%e!<%?$K%M%C%H%o!<%/$r2p$7$F@\B32DG=$J?M$OC/$G$b!$%&%'%V%V%i%&%6$d(B +Mercurial$B$r;H$C$F%j%]%8%H%j$+$i%G!<%?$rFI$_=P$9$3$H$,$G$-$k!%%i%C%W%H%C%W(B +$B$G5/F0$5$l$?(B\hgcmd{serve}$B%$%s%9%?%s%9$X$N(BURL$B$O(B +\Verb|http://my-laptop.local:8000/|$B$N$h$&$K$J$k!%(B -The \hgcmd{serve} command is \emph{not} a general-purpose web server. -It can do only two things: +%The \hgcmd{serve} command is \emph{not} a general-purpose web server. +%It can do only two things: +\hgcmd{serve}$B%3%^%s%I$O0lHLMQES8~$1$N%&%'%V%5!<%P$G$O(B\emph{$B$J$$(B}$B!%$3$N%3(B +$B%^%s%I$O<!$N(B2$B$D$N$3$H$@$1$r9T$&!'(B \begin{itemize} -\item Allow people to browse the history of the repository it's - serving, from their normal web browsers. -\item Speak Mercurial's wire protocol, so that people can - \hgcmd{clone} or \hgcmd{pull} changes from that repository. +%\item Allow people to browse the history of the repository it's +% serving, from their normal web browsers. + \item $BIaDL$N%&%'%V%V%i%&%6$r;H$C$F$$$k%f!<%6$KBP$7$F$O%j%]%8%H%j$NMzNr(B + $B$X$N;2>H!%(B +%\item Speak Mercurial's wire protocol, so that people can +% \hgcmd{clone} or \hgcmd{pull} changes from that repository. + \item Mercurial$B$r;H$C$F$$$k%f!<%6$KBP$7$F$O!$(B\hgcmd{clone}$B$^$?$O(B + \hgcmd{pull}$B$,$G$-$k$h$&$K(BMercurial$B%o%$%d%W%m%H%3%k$N%5%]!<%H!%(B + \end{itemize} -In particular, \hgcmd{serve} won't allow remote users to \emph{modify} -your repository. It's intended for read-only use. +%In particular, \hgcmd{serve} won't allow remote users to \emph{modify} +%your repository. It's intended for read-only use. + +\hgcmd{serve}$B$O%j%b!<%H%f!<%6$K%j%]%8%H%j$NJQ99$r5v2D$7$J$$!%$3$N%3%^%s(B +$B%I$OFI$_=P$7$N$_$N;HMQ$r0U?^$7$F$$$k!%(B -If you're getting started with Mercurial, there's nothing to prevent -you from using \hgcmd{serve} to serve up a repository on your own -computer, then use commands like \hgcmd{clone}, \hgcmd{incoming}, and -so on to talk to that server as if the repository was hosted remotely. -This can help you to quickly get acquainted with using commands on -network-hosted repositories. +%If you're getting started with Mercurial, there's nothing to prevent +%you from using \hgcmd{serve} to serve up a repository on your own +%computer, then use commands like \hgcmd{clone}, \hgcmd{incoming}, and +%so on to talk to that server as if the repository was hosted remotely. +%This can help you to quickly get acquainted with using commands on +%network-hosted repositories. + +Mercurial$B$N(B\hgcmd{serve}$B%3%^%s%I$r;H$C$F!$<j85$N%3%s%T%e!<%?$G%j%]%8%H%j(B +$B%5!<%S%9$r9T$&$N$O4JC1$G$"$k!%1sJ}$K$"$k%5!<%P$H$d$j$H$j$9$k$N$HF1MM$K(B +\hgcmd{clone}$B!$(B\hgcmd{incoming}$BEy$N%3%^%s%I$r;H$&$3$H$,$G$-$k!%$3$l$O%j%](B +$B%8%H%j$r%M%C%H%o!<%/$GDs6!$9$k$3$H$K47$l$k$N$KLrN)$D$@$m$&!%(B %\subsection{A few things to keep in mind} \subsection{$B3P$($F$*$/$Y$-(B2, 3$B$NE@(B} -Because it provides unauthenticated read access to all clients, you -should only use \hgcmd{serve} in an environment where you either don't -care, or have complete control over, who can access your network and -pull data from your repository. +%Because it provides unauthenticated read access to all clients, you +%should only use \hgcmd{serve} in an environment where you either don't +%care, or have complete control over, who can access your network and +%pull data from your repository. + +\hgcmd{serve}$B$O!$G'>Z$J$7$G%"%/%;%9$r5v$9$?$a!$%M%C%H%o!<%/$X$N%"%/%;%9(B +$B$d!$%j%]%8%H%j$+$i$N%G!<%?(Bpull$B$rC/$,9T$C$F$b9=$o$J$$$h$&$J%M%C%H%o!<%/4D(B +$B6-$d!$40A4$J@)8f$,2DG=$J%M%C%H%o!<%/4D6-$G$N$_;HMQ$9$Y$-$G$"$k!%(B + +%The \hgcmd{serve} command knows nothing about any firewall software +%you might have installed on your system or network. It cannot detect +%or control your firewall software. If other people are unable to talk +%to a running \hgcmd{serve} instance, the second thing you should do +%(\emph{after} you make sure that they're using the correct URL) is +%check your firewall configuration. -The \hgcmd{serve} command knows nothing about any firewall software -you might have installed on your system or network. It cannot detect -or control your firewall software. If other people are unable to talk -to a running \hgcmd{serve} instance, the second thing you should do -(\emph{after} you make sure that they're using the correct URL) is -check your firewall configuration. +\hgcmd{serve}$B%3%^%s%I$O!$%7%9%F%`$d%M%C%H%o!<%/$K%$%s%9%H!<%k$5$l$F$$$k%U%!(B +$B%$%"%&%)!<%k%=%U%H%&%'%"$K$D$$$F$O2?$b4XCN$7$J$$!%$3$N%3%^%s%I$O%U%!%$%"(B +$B%&%)!<%k$NH/8+$d@)8f$O$G$-$J$$!%B>$N%f!<%6$,(B\hgcmd{serve}$B%3%^%s%I$K%"%/%;(B +$B%9$G$-$J$$>l9g!$$^$:H`$i$,@5$7$$(BURL$B$r;HMQ$7$F$$$k$+3NG'$7!$$=$N<!$K$9$Y$-(B +$B$3$H$O!$%U%!%$%"%&%)!<%k$N@_Dj$r3NG'$9$k$3$H$G$"$k!%(B + +%By default, \hgcmd{serve} listens for incoming connections on +%port~8000. If another process is already listening on the port you +%want to use, you can specify a different port to listen on using the +%\hgopt{serve}{-p} option. -By default, \hgcmd{serve} listens for incoming connections on -port~8000. If another process is already listening on the port you -want to use, you can specify a different port to listen on using the -\hgopt{serve}{-p} option. +$B%G%U%)%k%H$G$O(B\hgcmd{serve}$B$OE~Ce$9$k@\B3$r%]!<%H(B~8000$B$GBT$D!%(B +$B;HMQ$7$?$$%]!<%H$r$9$G$KB>$N%W%m%;%9$,;HMQ$7$F$$$k>l9g$O(B +\hgopt{serve}{-p}$B%*%W%7%g%s$r;H$C$FJL$N%]!<%H$GBT5!$9$k$h$&$K;XDj$9$k$3(B +$B$H$,$G$-$k!%(B -Normally, when \hgcmd{serve} starts, it prints no output, which can be -a bit unnerving. If you'd like to confirm that it is indeed running -correctly, and find out what URL you should send to your -collaborators, start it with the \hggopt{-v} option. +%Normally, when \hgcmd{serve} starts, it prints no output, which can be +%a bit unnerving. If you'd like to confirm that it is indeed running +%correctly, and find out what URL you should send to your +%collaborators, start it with the \hggopt{-v} option. + +$BDL>o!$(B\hgcmd{serve}$B$O;OF0$7$F$b%a%C%;!<%8$N=PNO$r9T$o$J$$!%$3$l$OB?>/:.Mp(B +$B$5$;$k$+$b$7$l$J$$!%<B:]$K@5$7$/F0:n$7$F$$$k$+$I$&$+3NG'$7$?$$>l9g$d!$6((B +$BNO<T$K65$($k(BURL$B$,CN$j$?$$>l9g$O(B\hggopt{-v}$B%*%W%7%g%s$r;XDj$9$k!%(B %\section{Using the Secure Shell (ssh) protocol} \section{Secure Shell (ssh)$B%W%m%H%3%k$N;HMQ(B} \label{sec:collab:ssh} -You can pull and push changes securely over a network connection using -the Secure Shell (\texttt{ssh}) protocol. To use this successfully, -you may have to do a little bit of configuration on the client or -server sides. +%You can pull and push changes securely over a network connection using +%the Secure Shell (\texttt{ssh}) protocol. To use this successfully, +%you may have to do a little bit of configuration on the client or +%server sides. + +Secure Shell (\texttt{ssh})$B%W%m%H%3%k$r;H$&$3$H$G!$JQ99$r%M%C%H%o!<%/>e$G(B +$B0BA4$K(Bpush$B$G$-$k!%$3$N%W%m%H%3%k$NMxMQ$K$O!$%/%i%$%"%s%HB&$+%5!<%PB&$K>/!9(B +$B@_Dj$,I,MW$G$"$k!%(B -If you're not familiar with ssh, it's a network protocol that lets you -securely communicate with another computer. To use it with Mercurial, -you'll be setting up one or more user accounts on a server so that -remote users can log in and execute commands. +%If you're not familiar with ssh, it's a network protocol that lets you +%securely communicate with another computer. To use it with Mercurial, +%you'll be setting up one or more user accounts on a server so that +%remote users can log in and execute commands. -(If you \emph{are} familiar with ssh, you'll probably find some of the -material that follows to be elementary in nature.) +ssh$B$r$"$^$j;H$C$?$3$H$,$J$$%f!<%6$N$?$a$K@bL@$9$k$H!$(Bssh$B$OB>$N%3%s%T%e!<(B +$B%?$H0BA4$KDL?.$r9T$&$?$a$N%M%C%H%o!<%/%W%m%H%3%k$G$"$k!%(B Mercurial$B$G;H$&(B +$B$?$a$K$O!$(B1$B$D0J>e$N%"%+%&%s%H$r%5!<%P$K@_Dj$7!$%j%b!<%H%f!<%6$,%m%0%$%s(B +$B$7!$%3%^%s%I$r<B9T$G$-$k$h$&$K$9$kI,MW$,$"$k!%(B + +%(If you \emph{are} familiar with ssh, you'll probably find some of the +%material that follows to be elementary in nature.) + +$B!J(Bssh$B$KFk@w$_$N$"$k%f!<%6$K$O0J2<$NOC$O=iJbE*$K46$8$i$l$k$K0c$$$J$$!%!K(B %\subsection{How to read and write ssh URLs} \subsection{ssh$B$N(BURL$B$r$I$N$h$&$KFI$`$+(B} -An ssh URL tends to look like this: +%An ssh URL tends to look like this: +ssh URL$B$O0lHL$K<!$N$h$&$K$J$k!'(B \begin{codesample2} ssh://bos@hg.serpentine.com:22/hg/hgbook \end{codesample2} \begin{enumerate} -\item The ``\texttt{ssh://}'' part tells Mercurial to use the ssh - protocol. -\item The ``\texttt{bos@}'' component indicates what username to log - into the server as. You can leave this out if the remote username - is the same as your local username. -\item The ``\texttt{hg.serpentine.com}'' gives the hostname of the - server to log into. -\item The ``:22'' identifies the port number to connect to the server - on. The default port is~22, so you only need to specify this part - if you're \emph{not} using port~22. -\item The remainder of the URL is the local path to the repository on - the server. +%\item The ``\texttt{ssh://}'' part tells Mercurial to use the ssh +% protocol. + \item ``\texttt{ssh://}''$BIt$O(BMercurial$B$K(Bssh$B%W%m%H%3%k$r;H$&$3$H$r;X<($9(B + $B$k!%(B +%\item The ``\texttt{bos@}'' component indicates what username to log +% into the server as. You can leave this out if the remote username +% is the same as your local username. + \item ``\texttt{bos@}''$BIt$O%5!<%P$X$N%m%0%$%s$K;H$&%f!<%6L>$r;XDj$9$k!%(B +$B%m!<%+%k%^%7%s$G$N%f!<%6L>$HF1$8$b$N$r;HMQ$9$k>l9g$O;XDj$7$J$/$F$b$h$$!%(B +%\item The ``\texttt{hg.serpentine.com}'' gives the hostname of the +% server to log into. + \item ``\texttt{hg.serpentine.com}''$B$O%m%0%$%s$9$k%5!<%P$N%[%9%HL>$G$"(B + $B$k!%(B +%\item The ``:22'' identifies the port number to connect to the server +% on. The default port is~22, so you only need to specify this part +% if you're \emph{not} using port~22. + \item ``:22''$B%5!<%P$N@\B3%]!<%H$r@)Dj$9$k!%%G%U%)%k%H%]!<%H$O(B~22$B$J$N(B + $B$G!$(B22$BHV0J30$r;H$&;~$N$_;XDj$9$kI,MW$,$"$k!%(B +%\item The remainder of the URL is the local path to the repository on +% the server. + \item URL$B$N;D$j$NItJ,$O%5!<%P>e$N%j%]%8%H%j$X$N%m!<%+%k%Q%9$G$"$k!%(B \end{enumerate} -There's plenty of scope for confusion with the path component of ssh -URLs, as there is no standard way for tools to interpret it. Some -programs behave differently than others when dealing with these paths. -This isn't an ideal situation, but it's unlikely to change. Please -read the following paragraphs carefully. +%There's plenty of scope for confusion with the path component of ssh +%URLs, as there is no standard way for tools to interpret it. Some +%programs behave differently than others when dealing with these paths. +%This isn't an ideal situation, but it's unlikely to change. Please +%read the following paragraphs carefully. + +ssh URL$B$N%Q%9It$K$D$$$F$O!$%D!<%k8~$1$KJQ49$9$kI8=`E*$JJ}K!$,$J$$$?$a!$:.(B +$BMp$,B?$$!%$$$/$D$+$N%W%m%0%i%`$H!$$=$NB>$N%W%m%0%i%`$G$O%Q%9$r07$&:]$N5s(B +$BF0$,0[$J$C$F$$$k!%$3$N>u67$OM}A[$H$O$+$1N%$l$F$$$k$,!$=$@5$9$k$N$O:$Fq$@(B +$B$H;W$o$l$k!%0J2<$NCJMn$rCm0U?<$/FI$s$GM_$7$$!%(B -Mercurial treats the path to a repository on the server as relative to -the remote user's home directory. For example, if user \texttt{foo} -on the server has a home directory of \dirname{/home/foo}, then an ssh -URL that contains a path component of \dirname{bar} -\emph{really} refers to the directory \dirname{/home/foo/bar}. +%Mercurial treats the path to a repository on the server as relative to +%the remote user's home directory. For example, if user \texttt{foo} +%on the server has a home directory of \dirname{/home/foo}, then an ssh +%URL that contains a path component of \dirname{bar} +%\emph{really} refers to the directory \dirname{/home/foo/bar}. +Mercurial$B$O%j%]%8%H%j$X$N%Q%9$r%j%b!<%H%f!<%6$N%[!<%`%G%#%l%/%H%j$+$i$NAj(B +$BBP%Q%9$H$7$F<h$j07$&!%Nc$($P%5!<%P$G%f!<%6(B\texttt{foo}$B$O%[!<%`%G%#%l%/%H(B +$B%j(B\dirname{/home/foo}$B$r;}$D!%=>$C$F(B\dirname{bar}$B$r4^$`(Bssh URL$B$N%Q%9It$O(B +\dirname{/home/foo/bar}$B$H$J$k!%(B -If you want to specify a path relative to another user's home -directory, you can use a path that starts with a tilde character -followed by the user's name (let's call them \texttt{otheruser}), like -this. +%If you want to specify a path relative to another user's home +%directory, you can use a path that starts with a tilde character +%followed by the user's name (let's call them \texttt{otheruser}), like +%this. +$BB>$N%f!<%6$N%[!<%`%G%#%l%/%H%j$X$NAjBP%Q%9$r;XDj$7$?$$>l9g$O!$<!$NNc$N$h(B +$B$&$K%A%k%@$K%f!<%6L>$rB3$1$?%Q%9$r;H$&$3$H$,$G$-$k!%!J$3$3$G$OB>$N%f!<%6(B +$B$N%f!<%6L>$r(B\texttt{otheruser}$B$H$9$k!%!K(B \begin{codesample2} ssh://server/~otheruser/hg/repo \end{codesample2} -And if you really want to specify an \emph{absolute} path on the -server, begin the path component with two slashes, as in this example. +%And if you really want to specify an \emph{absolute} path on the +%server, begin the path component with two slashes, as in this example. +$B%5!<%P>e$G@dBP%Q%9$r;XDj$7$?$$>l9g$O!$<!$NNc$N$h$&$K%Q%9It$r(B2$B$D$N%9%i%C%7%e(B +$B$G;O$a$k!%(B \begin{codesample2} ssh://server//absolute/path \end{codesample2} @@ -733,39 +814,59 @@ %\subsection{Finding an ssh client for your system} \subsection{$BMxMQCf$N%7%9%F%`8~$1$N(Bssh client$B$r8+$D$1$k(B} -Almost every Unix-like system comes with OpenSSH preinstalled. If -you're using such a system, run \Verb|which ssh| to find out if -the \command{ssh} command is installed (it's usually in -\dirname{/usr/bin}). In the unlikely event that it isn't present, -take a look at your system documentation to figure out how to install -it. +%Almost every Unix-like system comes with OpenSSH preinstalled. If +%you're using such a system, run \Verb|which ssh| to find out if +%the \command{ssh} command is installed (it's usually in +%\dirname{/usr/bin}). In the unlikely event that it isn't present, +%take a look at your system documentation to figure out how to install +%it. -On Windows, you'll first need to choose download a suitable ssh -client. There are two alternatives. +Unix$B7O%7%9%F%`$NKX$s$I$O(BOpenSSH$B$,%W%j%$%s%9%H!<%k$5$l$F$$$k!%$=$N$h$&$J%7(B +$B%9%F%`$G$O!$(B\Verb|which ssh|$B$r<B9T$7$F(B\command{ssh}$B%3%^%s%I$,%$%s%9%H!<%k(B +$B$5$l$F$$$k$+$I$&$+D4$Y$k$3$H$,$G$-$k!%!JIaDL$O(B\dirname{/usr/bin}$B$K%$%s%9(B +$B%H!<%k$5$l$F$$$k$O$:$@!%!KK|$,0l%$%s%9%H!<%k$5$l$F$$$J$+$C$?>l9g$O!$%7%9(B +$B%F%`$N%I%-%e%a%s%H$r;2>H$7$F%$%s%9%H!<%kJ}K!$rD4$Y$FM_$7$$!%(B + +%On Windows, you'll first need to choose download a suitable ssh +%client. There are two alternatives. +Windows$B$G$O!$$^$:E,@Z$J(Bssh$B%/%i%$%"%s%H$r%@%&%s%m!<%I$9$kI,MW$,$"$k!%MxMQ(B +$B2DG=$J%/%i%$%"%s%H$O(B2$B$D$"$k!%(B \begin{itemize} -\item Simon Tatham's excellent PuTTY package~\cite{web:putty} provides - a complete suite of ssh client commands. -\item If you have a high tolerance for pain, you can use the Cygwin - port of OpenSSH. +%\item Simon Tatham's excellent PuTTY package~\cite{web:putty} provides +% a complete suite of ssh client commands. + \item Simon Tatham$B$K$h$kHs>o$KM%$l$?(BPuTTY$B%Q%C%1!<%8(B~\cite{web:putty}$B$O(B + ssh$B%/%i%$%"%s%H$N40A4$J%3%^%s%I72$rDs6!$9$k!%(B +%\item If you have a high tolerance for pain, you can use the Cygwin +% port of OpenSSH. + \item $BLLE]$r1^$o$J$$$N$G$"$l$P!$(BCygwin$BHG$N(BOpenSSH$B$r;H$&$3$H$b$G$-$k!%(B \end{itemize} -In either case, you'll need to edit your \hgini\ file to tell -Mercurial where to find the actual client command. For example, if -you're using PuTTY, you'll need to use the \command{plink} command as -a command-line ssh client. +%In either case, you'll need to edit your \hgini\ file to tell +%Mercurial where to find the actual client command. For example, if +%you're using PuTTY, you'll need to use the \command{plink} command as +%a command-line ssh client. + +$B$I$N>l9g$b(B\hgini\ $B%U%!%$%k$rJT=8$7!$(BMercurial$B$K<B:]$N%3%^%s%I$,$I$3$K$"$k(B +$B$N$+$r;X<($7$J$1$l$P$J$i$J$$!%Nc$($P(BPuTTY$B$r;H$&>l9g$O!$(B\command{plink}$B%3(B +$B%^%s%I$r%3%^%s%I%i%$%sHG(Bssh$B%/%i%$%"%s%H$H$7$F;HMQ$9$k!%(B + + \begin{codesample2} [ui] ssh = C:/path/to/plink.exe -ssh -i "C:/path/to/my/private/key" \end{codesample2} \begin{note} - The path to \command{plink} shouldn't contain any whitespace - characters, or Mercurial may not be able to run it correctly (so - putting it in \dirname{C:\\Program Files} is probably not a good - idea). +% The path to \command{plink} shouldn't contain any whitespace +% characters, or Mercurial may not be able to run it correctly (so +% putting it in \dirname{C:\\Program Files} is probably not a good +% idea). +\command{plink}$B$X$N%Q%9$O6uGrJ8;z$r4^$s$G$O$J$i$J$$!%6uGr$r4^$`$H(B +Mercurial$B$O@5$7$/<B9T$9$k$3$H$,$G$-$J$$!%!J=>$C$F(B\dirname{C:\\Program +Files}$B$XCV$/$N$O$$$$9M$($H$O8@$($J$$!%!K(B \end{note} %\subsection{Generating a key pair} -\subsection{$B%-!<%Z%"$N:n@.(B} +\subsection{$B80%Z%"$N:n@.(B} %To avoid the need to repetitively type a password every time you need %to use your ssh client, I recommend generating a key pair. On a