|
|
1.1 root 1: .TI REMOTE
2: Using rcp, rlogin, rsh, and .rhosts with the Ethernet Network
3:
4: You can use the
5: .I rcp ,
6: .I rlogin ,
7: and
8: .I rsh
9: commands from a login session
10: on one Unix machine to gain access to a second Unix machine,
11: which in some useful cases is the same machine.
12: If the machines involved are in different administrative
13: domains or your local account name does not exist on the
14: remote machine, or both, you have to set up a special file called
15: .I .rhosts
16: before you can use these commands.
17: In this article the term,
18: .I machine ,
19: refers to what appears in some documentation as the term,
20: .I host .
21: .SH "What These Commands Do"
22: The remote copy command,
23: .I rcp ,
24: allows you to transfer files or entire directories between machines,
25: and its syntax is very similar to that of the standard Unix
26: .I cp
27: command.
28: With the remote login command,
29: .I rlogin ,
30: you can start up a login session on another machine,
31: and switch between login sessions at will.
32: The remote shell command,
33: .I rsh ,
34: allows you to run exactly one shell command sequence on
35: another machine, but breaks the remote connection when
36: the sequence is done.
37: .LP
38: These commands (as well as
39: .I rwho
40: and
41: .I ruptime )
42: all begin with the letter
43: .E r
44: to designate special remote versions of standard Unix commands.
45: In future versions of Unix they will probably become obsolete
46: as their functions are absorbed by the standard commands.
47: .SH "What These Commands Will Not Do"
48: These commands will not allow remote access to non-Unix machines,
49: such as IBM CMS and DEC VMS.
50: For this you may want to investigate the
51: .I ftp ,
52: .I telnet ,
53: and
54: .I tn3270
55: commands (type
56: .E "man ftp" ,
57: .E "man telnet" ,
58: etc. for more information).
59: Unlike their older Berknet counterparts, the Ethernet commands
60: .I rcp
61: and
62: .I rsh ,
63: but not
64: .I rlogin ,
65: will under no circumstances ask you for a
66: password to a remote account, relying instead on the
67: .I .rhosts
68: mechanism (described below), which must be arranged in advance.
69: They also will not queue up a remote request for later processing if
70: the remote machine happens to be down or unreachable when you issue it.
71: Both these functions are still provided by the
72: .I netcp
73: and
74: .I net
75: commands, which use the otherwise slow and limited Berknet.
76: .SH "A Simple Case Of Remote Copying \- rcp"
77: As an example, suppose you want to copy a file called
78: .I junk
79: from an account on a machine called
80: .I violet
81: to an account of the same name on a machine called
82: .I topaz .
83: If your local machine (the one to which you are logged in) is
84: .I violet ,
85: use the command,
86: .DS
87: % rcp junk topaz:junk
88: .DE
89: and if the local machine is
90: .I topaz ,
91: use the command,
92: .DS
93: % rcp violet:junk junk
94: .DE
95: Suppose now that you have a third account of the same name on the
96: .I ruby
97: machine.
98: If you are logged in to that account, the command would be
99: .DS
100: % rcp violet:junk topaz:junk
101: .DE
102: Note that in the simple examples of this section and the next,
103: your accounts must have the same names and the machines
104: must be in the same administrative domain (must be listed in the
105: .I /etc/hosts.equiv
106: file on both machines; type
107: .E "help domains"
108: for details).
109: .SH "Remote Copying Several Files \- rcp"
110: By analogy with the standard Unix
111: .E cp
112: command, you may copy several files from one machine
113: to a directory on another machine.
114: For example, from your home directory on
115: .I violet ,
116: you can copy all the files in a subdirectory called
117: .I stuff
118: to your home directory on
119: .I topaz
120: using the command,
121: .DS
122: % rcp stuff/* topaz:.
123: .DE
124: where the period following the colon indicates to copy to
125: the default current directory, your home directory on
126: .I topaz .
127: Doing the same transfer when the local machine is
128: .I topaz
129: instead of
130: .I violet
131: is similar to the last example, but with a small change:
132: .DS
133: % rcp violet:"stuff/*" .
134: .DE
135: The quotation marks are needed to delay interpretation of
136: the special
137: .E *
138: notation until the string,
139: .E stuff/* ,
140: gets to
141: .I violet .
142: .LP
143: Also by analogy with the Unix
144: .E cp
145: command, you can copy entire directory trees (that is, all a
146: directory's files and subdirectories at all levels) between machines.
147: For example, from your home directory on
148: .I topaz ,
149: you can copy your entire account to a subdirectory called
150: .I oldaccount
151: on
152: .I violet
153: using the command,
154: .DS
155: % rcp -r . violet:oldaccount
156: .DE
157: If your local machine (the one to which you are logged in) were
158: .I violet
159: instead, the command would look like
160: .DS
161: % rcp -r topaz:. oldaccount
162: .DE
163: .SH "Error Messages You May Encounter"
164: If the examples in this section or the last give you error
165: messages such as ``Permission denied'' or ``Login incorrect'',
166: you will have to set up a
167: .I .rhosts
168: file on the remote machine.
169: If you see any of the error messages ``Connection refused'',
170: ``Connection timed out'', or ``Network unreachable'',
171: the remote machine is inaccessible.
172: Since this condition usually lasts no more than a few hours,
173: you can try again later.
174: .SH "When The .rhosts File Is Needed"
175: Whenever you try to use one of the commands
176: .I rcp ,
177: .I rlogin ,
178: or
179: .I rsh
180: with two machines in different administrative domains
181: or with different local and remote account names,
182: you must set up a special file called
183: .I .rhosts .
184: Its purpose is to maintain system security by
185: certifying that you, from your local account, are authorized to use
186: a particular account on a remote machine.
187: Within the same administrative domain it is assumed that
188: accounts having the same name belong to the same person,
189: in which case this file is not needed.
190: In all cases of different account names or different domains,
191: however, a
192: .I .rhosts
193: file identifying your local machine and account
194: must be set up in the home directory of the remote account.
195: This can be hard to remember, so for emphasis,
196: .DS
197: SET UP THE .RHOSTS FILE ON THE REMOTE ACCOUNT.
198: .DE
199: Once your local machine and account names have
200: been added to a remote account's
201: .I .rhosts
202: file, you
203: have complete access to the account,
204: including all its files and computing resources.
205: So, for example, you could start up a remote login session on that
206: account without having to know the password.
207: This technique can be useful if you want to let someone use your
208: account for a limited time without compromising your password,
209: because when they no longer need access you can delete them from the
210: .I .rhosts
211: file.
212: .LP
213: You will probably want to be careful about who you enter
214: into this file and how long you leave them there.
215: Periodically, you may want to check that no one who
216: has access to your account has added others to the file
217: without your knowledge.
218: It may also be wise to make sure that only your account has
219: read or write access to your
220: .I .rhosts
221: file by setting the appropriate file permissions.
222: .SH "Setting Up A .rhosts File"
223: If you want the system to recognize your
224: .I .rhosts
225: file, it must be located in your home directory,
226: but if you have no
227: .I .rhosts
228: at all the system will not complain.
229: You create and modify it using a text editor, such as
230: .I vi ,
231: and make one-line entries consisting of
232: a machine name, a space, and an account name.
233: The existence of such an entry means that that
234: account on that machine can access your account (where the
235: .I .rhosts
236: file is located) without a password.
237: The following
238: .I .rhosts
239: file that might appear in an account on the
240: .I topaz
241: machine would give access to
242: .I fred
243: and
244: .I jerry
245: from the
246: .I violet
247: machine, and to
248: .I jane
249: from the
250: .I gumball
251: machine.
252: .DS
253: violet fred
254: violet jerry
255: gumball jane
256: .DE
257: Often a machine has several variant names which may be used
258: interchangeably in certain contexts, but the mechanism that uses
259: .I .rhosts
260: only recognizes one name.
261: When your account is the target of a remote request, the
262: .I .rhosts
263: mechanism will deny access unless the requesting machine's
264: name as it appears in your
265: .I .rhosts
266: file is the same as the first variant appearing in a file called
267: .I /etc/hosts
268: on the your (the target) machine.
269: Here is a
270: .I .rhosts
271: file that might appear on the
272: .I gumball
273: machine.
274: .DS
275: violet fred
276: ucbviolet fred
277: violet.berkeley.edu fred
278: .DE
279: Depending on the first variant name of
280: .I violet
281: appearing in the
282: .I /etc/hosts
283: file on
284: .I gumball ,
285: only one of these lines will give access to
286: .I fred
287: from
288: .I violet ,
289: while the presence of the other two lines does no harm.
290: .SH "Remote Copying Between Different Account Names"
291: Suppose now that the account named
292: .I jane
293: on the
294: .I gumball
295: machine has a
296: .I .rhosts
297: file identifying your local account,
298: .I fred ,
299: on the
300: .I violet
301: machine.
302: You may now do remote copying between these machines,
303: provided that you specify the remote account name,
304: otherwise your local account name will be assumed.
305: For example, from the
306: .I fred
307: account on
308: .I violet
309: you can copy a file called
310: .I stuff
311: to
312: .I jane
313: on
314: .I gumball ,
315: and name the new copy
316: .I stuffing
317: in the process, using the command,
318: .DS
319: % rcp stuff gumball.jane:stuffing
320: .DE
321: This style of specifying a machine-account name combination
322: currently works for Computer Center machines.
323: It is different in some administrative domains, such as those
324: containing Computer Science department machines, where you would use
325: .DS
326: % rcp stuff jane@gumball:stuffing
327: .DE
328: This second style will one day become standard.
329: .SH "Using rcp To Copy Files To The Same Machine"
330: You can use your knowledge of how to transfer files between
331: different account names on different machines, to transfer
332: files between different accounts on the same machine.
333: Without using the network
334: this is tricky, especially when several levels
335: of permission-protected directories are involved,
336: and usually means temporarily opening up access to
337: everyone on the system until the transfer is complete.
338: With
339: .I rcp ,
340: however, it is easy and safe.
341: For example, to transfer the files
342: .I proposal
343: and
344: .I memo
345: from the
346: .I fred
347: acount to the
348: .I jerry
349: account, both on
350: .I violet ,
351: use
352: .DS
353: % rcp proposal memo violet.jerry:.
354: .DE
355: on the
356: .I fred
357: account, and
358: .DS
359: % rcp violet.fred:"proposal memo" .
360: .DE
361: on the
362: .I jerry
363: account.
364: In both cases the appropriate
365: .I .rhosts
366: file must have been set up beforehand.
367: .SH "Remote Login \- rlogin"
368: Using the remote login command,
369: .I rlogin ,
370: from one login session, you can start up another
371: login session on a remote machine, which may be the same
372: as the local machine.
373: For example, the command
374: .DS
375: % rlogin violet
376: .DE
377: would try to start up a remote login session on
378: .I violet
379: using the same account name as your local account.
380: If you had such an account on the remote machine and the
381: local and remote machines were in the same administrative
382: domain, or if the remote account had the appropriate entry in its
383: .I .rhosts
384: file, you would then find
385: yourself in a remote login session with no questions asked.
386: If this were not the case,
387: .I rlogin
388: would ask you for the password to the remote account
389: and you would have to type it in correctly before the
390: .I rlogin
391: session would begin.
392: At that point you could set up the
393: .I .rhosts
394: file so that in the future you could
395: .I rlogin
396: without a password.
397: .LP
398: In order to
399: .I rlogin
400: to an account of a different name, use the
401: .I \-l
402: (ell) option followed by the account name.
403: For example, to
404: .I rlogin
405: to the
406: .I fred
407: account located on
408: .I violet ,
409: use
410: .DS
411: % rlogin violet -l fred
412: .DE
413: which would ask you for
414: .I fred 's
415: password unless the appropriate entry appeared in
416: .I fred 's
417: .I .rhosts
418: file.
419: .SH "Suspending Remote Login Sessions"
420: From one
421: .I rlogin
422: session you may start up another
423: .I rlogin
424: session, and from there another, and so forth.
425: Anytime you want to resume the original login session you
426: can either logout from or suspend the current session.
427: To suspend the current
428: .I rlogin
429: session and return
430: to the original non-remote login session, type
431: .E ~^Z
432: (tilde followed by control-Z) at the beginning of a line
433: and then type a return.
434: Later you may resume that remote session by using the
435: .I fg
436: command after the shell prompt, which
437: is the command to foreground jobs in the C shell.
438: .LP
439: Suppose you are in an
440: .I rlogin
441: session on machine
442: .I violet
443: that you started up on
444: .I topaz
445: during an
446: .I rlogin
447: session started up on
448: .I gumball ,
449: in other words, suppose the chain of login sessions looks like
450: .DS
451: gumball -> topaz -> violet
452: .DE
453: Then typing
454: .E ~^Z
455: at the beginning of a line followed by a return
456: would bring you back to the original non-remote session on
457: .I gumball ,
458: as mentioned above.
459: If instead you wanted to be brought back to
460: .I topaz ,
461: that is, to the second login session in the chain,
462: then you would type
463: .E ~~^Z
464: follwed by a return.
465: In general, if you want to suspend an
466: .I rlogin
467: session and be brought back to the
468: .I n -th
469: login session in a chain, type
470: .I n
471: .E ~ 's
472: at the beginning of a line, followed by
473: .E ^Z
474: and a return.
475: .LP
476: Currently there is a bug which sometimes prevents an
477: attempt to suspend a remote login session to fail;
478: if this happens to you, just try again.
479: Also note that during a remote login session, all lines
480: that begin with
481: .E ~
482: are treated specially, one example being
483: .E ~^Z .
484: Another example is
485: .E ~. ,
486: which abruptly terminates (rather than suspends) the remote login session.
487: It is subject to an
488: .I n
489: tildes rule similar to that for
490: .E ~^Z .
491: When a line beginning with
492: .E ~
493: is not recognized, the line is echoed to the terminal
494: when you type a return in order to let you know that
495: it was not intercepted.
496: This is particularly noticeable when composing
497: a letter from within the
498: .I mail
499: program if you are in the habit of using
500: tilde escape sequences.
501: .SH "Character Parity Stripping With rlogin"
502: A remote login session has all the appearances of a normal login
503: session aside from marginal typing delays, special treatment of
504: lines beginning with
505: .E ~ ,
506: and stripping of character parity.
507: Sometimes you may want to preserve parity, for example, when
508: using a terminal emulation program or running the
509: .I emacs
510: editor.
511: This is done by starting up
512: .I rlogin
513: with the
514: .I \-8
515: option, as in
516: .DS
517: % rlogin violet -l fred -8
518: .DE
519: which preserves all 8 bits of characters transmitted during the
520: .I rlogin
521: session.
522: .SH "Remote Command Execution \- rsh"
523: The remote shell command,
524: .I rsh ,
525: allows you to run exactly one shell command sequence on
526: another machine, but breaks the remote connection when
527: the sequence is done.
528: It is somewhat similar to an
529: .I rlogin
530: session in which you run one command sequence and then logout,
531: but unlike
532: .I rlogin ,
533: it allows you to redirect input and output with files on
534: the local machine and it never asks for a password.
535: Otherwise, the
536: .I rsh
537: command is subject to the same rules with respect to
538: .I .rhosts
539: files as
540: .I rcp
541: and
542: .I rlogin
543: and accepts a
544: .I \-l
545: option for specifying an account name different from
546: the local account name.
547: For example, to display a detailed listing of the files in the
548: .I kate
549: account on the remote machine
550: .I soda ,
551: use
552: .DS
553: % rsh soda -l kate ls -l
554: .DE
555: which works provided you have set up the appropriate
556: .I .rhosts
557: file beforehand.
558: .SH "When Remote Commands Need Quoting"
559: Quotation marks around a command are needed in case
560: it contains meta-characters that you want interpreted
561: on the remote machine.
562: So, from the previous example, to save the output listing
563: in a local file called
564: .I localfile ,
565: use
566: .DS
567: % rsh soda -l kate ls -l > localfile
568: .DE
569: and to save it in a remote file called
570: .I remotefile ,
571: on the
572: .I soda
573: machine, use
574: .DS
575: % rsh soda -l kate "ls -l > remotefile"
576: .DE
577: .SH "Backgrounding An rsh Command"
578: Sometimes you may wish to run a lengthy
579: .I rsh
580: or
581: .I rcp
582: command in the background.
583: This is done by typing an
584: .E &
585: at the end of the command, as with other Unix commands.
586: In the case of
587: .I rsh ,
588: however, you can do this only if you have explicitly
589: specified from where the command input is coming, because
590: .I rsh
591: will try to read from the terminal by default,
592: even if the command sequence being run uses no terminal input.
593: So you must either redirect input from
594: a data file or indicate that there is no input by giving the
595: .I \-n
596: option to
597: .I rsh .
598: .LP
599: For example, suppose you want to copy your current directory on
600: .I violet ,
601: including all its files and directories at all levels, to the
602: your account on
603: .I soda
604: such that the file modification times are the same
605: for the remote copy as for the original directory.
606: In addition suppose you want to
607: background this time-consuming process.
608: You cannot use
609: .I "rcp \-r"
610: without changing the file modification times, so
611: you must use the
612: .I tar
613: command twice \- once locally and once remotely \- as in
614: .DS
615: % tar cBf - . | rsh soda tar xBf - &
616: .DE
617: which you run from
618: .I violet .
619: Backgrounding this command works since the input to
620: .I rsh
621: is specified.
622: If on the other hand you are currently logged in to
623: .I soda ,
624: you must use the
625: .I \-n
626: option, as in
627: .DS
628: % rsh violet -n tar cBf - . | tar xBf - &
629: .DE
630: If you forget to use
631: .I \-n
632: in a situation where it is needed, your command will
633: be suspended with the message, ``Stopped (tty input)''.
634: To resume execution you have to bring it back to the foreground with the
635: .I fg
636: command.
637: .SH "Abbreviating rlogin And rsh Using /usr/hosts"
638: There are shortened forms for
639: .I rlogin
640: and
641: .I rsh
642: which require you to have the directory
643: .I /usr/hosts
644: in your searchpath (type
645: .E "help searchpath"
646: for more information).
647: Once your searchpath contains
648: .I /usr/hosts ,
649: a command beginning with a machine name is
650: transformed into the same command with the word,
651: .E rsh ,
652: prepended.
653: Here are some examples of this transformation:
654: .DS
655: .ta \w'violet -l fred ls -l \fRbecomes\fP'uR +\w' 'u
656: violet -l fred ls -l \fRbecomes\fP rsh violet -l fred ls -l
657: violet -l fred \fRbecomes\fP rsh violet -l fred
658: \fReffectively becoming\fP rlogin violet -l fred
659: violet -l fred -8 \fRbecomes\fP rsh violet -l fred -8
660: \fRNOT effectively becoming\fP rlogin violet -l fred -8
661: .DE
662: The first example is straightforward.
663: In the second example it happens that when
664: .I rsh
665: finds no remote command to run, it turns you over to
666: .I rlogin
667: after first recognizing the
668: .I \-l
669: option.
670: In the third example, unfortunately, the
671: .I rsh
672: command does not recognize the
673: .I \-8
674: option, so instead of turning you over to
675: .I rlogin ,
676: it tries to run
677: .E -8
678: as a remote command (sic).
679: .LP
680: Another problem can arise when a machine name is the same as
681: an existing command name.
682: This is the case when you begin a command with the name
683: .I pearl ,
684: for example, which runs either the PEARL programming language
685: environment or an
686: .I rsh
687: command depending on the location of
688: .I /usr/hosts
689: in your searchpath.
690:
691:
692: jak
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.