Difference between revisions of "Install SSH"

From AwkwardTV
Jump to: navigation, search
m
m (SSH = Spam Service Hunter)
Line 1: Line 1:
[http://shusik.freehostia.com/styles/tell-me.htm tell me why did fly away] [http://muddernh.freehostia.com/small/gradina/ gradina] [http://lombax.freehostia.com/description/kiera-sky.htm kiera sky] [http://elita793.freehostia.com/web/www-bronte/ www bronte it] [http://bugge.freehostia.com/v-motorola/ v535 motorola] [http://shusik.freehostia.com/styles/kitai.htm kitai] [http://elita793.freehostia.com/web/fornello-a/ fornello a gas 4 fuochi] [http://shusik.freehostia.com/styles/vendita-articolo.htm vendita articolo sportivi] [http://dano-mano.freehostia.com/html/verremo-a/ verremo a te] [http://mesteno.freehostia.com/street-blow/ street blow jobs] [http://elita793.freehostia.com/web/mauma/ mauma] [http://cute-krissie.freehostia.com/blog/heyduk-adolf.htm heyduk adolf] [http://yuki-yusia.freehostia.com/midi-ro/ midi ro] [http://tapeshoes.freehostia.com/blog/terry-winter/ terry winter] [http://cute-krissie.freehostia.com/blog/guarda-video.htm guarda video quattrocchi] [http://liilliil.freehostia.com/small/canzoni-per.htm canzoni per chitarra] [http://pilarcruz.freehostia.com/data/breve-amore.htm breve amore] [http://koopochka.freehostia.com/directory/stricker-der/ stricker der] [http://koopochka.freehostia.com/directory/dissipatore-per/ dissipatore per notebook] [http://pilarcruz.freehostia.com/data/gigi-proietti.htm gigi proietti mp3] [http://lombax.freehostia.com/description/scanner-hp.htm scanner hp scanjet 2400] [http://pilarcruz.freehostia.com/data/soy-cubano.htm soy cubano] [http://superchet.freehostia.com/feltrinelli-international/ feltrinelli international] [http://cute-krissie.freehostia.com/blog/la-bella.htm la bella e la bestia film dvd] [http://muddernh.freehostia.com/small/guiding/ guiding] [http://czalex.freehostia.com/articles/la-porta/ la porta murata] [http://mesteno.freehostia.com/breath-control/ breath control milano] [http://bigtyma.freehostia.com/description/traduzione-i/ traduzione i don t wanna know mario winans] [http://elita793.freehostia.com/web/la-battaglia/ la battaglia di okinawa] [http://lordavon.freehostia.com/resources/video-incesti.htm video incesti] [http://cute-krissie.freehostia.com/blog/mila-e.htm mila e shiro] [http://mesteno.freehostia.com/il-movimento/ il movimento operaio in germania dalle origini alla prima guerra mondiale] [http://superchet.freehostia.com/lupi-harness/ lupi harness] [http://superchet.freehostia.com/mango-frutto/ mango frutto] [http://pilarcruz.freehostia.com/data/kirstens.htm kirstens] [http://superchet.freehostia.com/giuseppe-zanotti/ giuseppe zanotti calzature di] [http://chipper2007.freehostia.com/styles/ultimo-la.htm ultimo la sfida] [http://czalex.freehostia.com/articles/file-midi/ file midi solo disco] [http://dano-mano.freehostia.com/html/suoneria-catoon/ suoneria catoon nokia] [http://bugge.freehostia.com/biene-maja/ biene maja] [http://czalex.freehostia.com/articles/stock-jeans/ stock jeans] [http://lombax.freehostia.com/description/maraya-carrey.htm maraya carrey] [http://shusik.freehostia.com/styles/lacey.htm lacey] [http://chipper2007.freehostia.com/styles/angels-care.htm angels care] [http://koopochka.freehostia.com/directory/honda-hornet/ honda hornet s] [http://lordavon.freehostia.com/resources/nokia.htm nokia 60] [http://pilarcruz.freehostia.com/data/gold-is.htm gold is a girl] [http://yuki-yusia.freehostia.com/jampi/ jampi] [http://pilarcruz.freehostia.com/data/ozone-dragostea.htm ozone dragostea din tei dj ross mix mp3] [http://koopochka.freehostia.com/directory/google-en/ google en espanol] [http://dano-mano.freehostia.com/html/key-free/ key free xtv] [http://liilliil.freehostia.com/small/lg-micro.htm lg micro hi fi] [http://elita793.freehostia.com/web/video-de/ video de chocolate] [http://bigtyma.freehostia.com/description/hilary-putnam/ hilary putnam] [http://lombax.freehostia.com/description/rum-zacapa.htm rum zacapa] [http://elita793.freehostia.com/web/il-cav/ il cav costante nicosia demoniaco ovvero dracula in brianza] [http://shusik.freehostia.com/styles/lotus-esprit.htm lotus esprit sport 300] [http://yuki-yusia.freehostia.com/traviata/ traviata] [http://superchet.freehostia.com/filmato-esecuzione/ filmato esecuzione fabrizio quattrocchi] [http://lombax.freehostia.com/description/bobby-valentino.htm bobby valentino] [http://dano-mano.freehostia.com/html/occasione/ occasione] [http://tapeshoes.freehostia.com/blog/sony-dvd/ sony dvd rom] [http://tapeshoes.freehostia.com/blog/il-futurismo/ il futurismo in arte] [http://muddernh.freehostia.com/small/gomma-firenze/ gomma firenze] [http://muddernh.freehostia.com/small/ventilatori-vortice/ ventilatori vortice luce] [http://bugge.freehostia.com/eberhart-richard/ eberhart richard] [http://tapeshoes.freehostia.com/blog/hp-laser/ hp laser 3550] [http://shusik.freehostia.com/styles/moulinex-mixer.htm moulinex mixer] [http://bigtyma.freehostia.com/description/tesine-scolastiche/ tesine scolastiche sul volontariato] [http://bugge.freehostia.com/comune-piacenz/ comune piacenz] [http://muddernh.freehostia.com/small/nuova-seat/ nuova seat altea diesel auto nuove] [http://liilliil.freehostia.com/small/kit-pioneer.htm kit pioneer] [http://muddernh.freehostia.com/small/achat-dvd/ achat dvd vierge] [http://lombax.freehostia.com/description/www-kobierno.htm www kobierno pl] [http://koopochka.freehostia.com/directory/sasa-tin/ sasa tin i kedzo] [http://tapeshoes.freehostia.com/blog/zen-gb/ zen 5gb] [http://dano-mano.freehostia.com/html/esame-di/ esame di sato] [http://liilliil.freehostia.com/small/mezzanotte-di.htm mezzanotte di fuoco] [http://yuki-yusia.freehostia.com/scaldabagni-metano/ scaldabagni metano] [http://pilarcruz.freehostia.com/data/wwo-hip.htm wwo hip hop] [http://bigtyma.freehostia.com/description/valentino/ valentino 5358] [http://cute-krissie.freehostia.com/blog/canzoni-disney.htm canzoni disney] [http://dano-mano.freehostia.com/html/finelco/ finelco] [http://liilliil.freehostia.com/small/serbia.htm serbia] [http://czalex.freehostia.com/articles/bed-breakfast/ bed breakfast milano] [http://rosencrantz319.freehostia.com/data/telecomando.htm telecomando 6] [http://superchet.freehostia.com/den-harrow/ den harrow mad desire] [http://chipper2007.freehostia.com/styles/english-schools.htm english schools in england] [http://mesteno.freehostia.com/aliens-vs/ aliens vs predator 2] [http://superchet.freehostia.com/falsetas-de/ falsetas de el barrio] [http://muddernh.freehostia.com/small/foto-di/ foto di spiagge nudiste] [http://superchet.freehostia.com/usb-/ usb 4 gb] [http://bigtyma.freehostia.com/description/discoteche-dell/ discoteche dell isola d ischia] [http://lombax.freehostia.com/description/akai-lettore.htm akai lettore dvd divx] [http://elita793.freehostia.com/web/r/ r9] [http://yuki-yusia.freehostia.com/bestie-boys/ bestie boys] [http://dano-mano.freehostia.com/html/woofer-jbl/ woofer jbl] [http://tapeshoes.freehostia.com/blog/segnaletica-aziendale/ segnaletica aziendale] [http://koopochka.freehostia.com/directory/house-of/ house of the rising sun animals] [http://rosencrantz319.freehostia.com/data/la-regina.htm la regina dei fiori] [http://tncc.edu/help/img/frpostle.htm cheap cipro] [http://egcti.upr.edu/help/img/vedugu.htm cheap lotrel] [http://www.tukwila.wednet.edu/UserFiles/Users/xetiher.htm cheap zyban] [http://tncc.edu/help/img/vicombs.htm effexor] [http://tncc.edu/help/img/jeheifne.htm cheap fluoxetine] [http://www.tukwila.wednet.edu/UserFiles/Users/ticiwy.htm free cool ringtones] [http://tncc.edu/help/img/erberg.htm used bmw auto] [http://egcti.upr.edu/help/img/poxe.htm alprazolam] [http://egcti.upr.edu/help/img/newe.htm buy paxil] [http://egcti.upr.edu/help/img/kereve.htm free cellular ringtones] [http://tncc.edu/help/img/coephrai.htm texas holdem poker] [http://tncc.edu/help/img/wemenges.htm didrex online] [http://tncc.edu/help/img/rocullin.htm hydrocodone online] [http://tncc.edu/help/img/biburrow.htm cheap lorazepam] [http://egcti.upr.edu/help/img/jonixob.htm order zoloft] [http://tncc.edu/help/img/crallman.htm free t-mobile ringtones] [http://tncc.edu/help/img/rustring.htm cheap tamiflu] [http://egcti.upr.edu/help/img/rytyty.htm free techno ringtones] [http://tncc.edu/help/img/boramona.htm country ringtones] [http://tncc.edu/help/img/rol.htm cheap ativan] [http://egcti.upr.edu/help/img/ryzoj.htm free cingular ringtones] [http://tncc.edu/help/img/hepledge.htm pantech ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/wynune.htm cheap albuterol] [http://tncc.edu/help/img/nahill.htm free samsung ringtones] [http://tncc.edu/help/img/hularuss.htm cheap amitriptyline] [http://tncc.edu/help/img/pijasper.htm home mortgage loans] [http://tncc.edu/help/img/clhagedo.htm cheap actos] [http://www.tukwila.wednet.edu/UserFiles/Users/gilybo.htm buy phentermine] [http://tncc.edu/help/img/rowintrie.htm cheap pharmacy online] [http://tncc.edu/help/img/stnugent.htm continentalairlines] [http://egcti.upr.edu/help/img/nyluk.htm buy diovan] [http://www.tukwila.wednet.edu/UserFiles/Users/boze.htm didrex] [http://tncc.edu/help/img/nesilver.htm cheap rivotril] [http://tncc.edu/help/img/hepaulin.htm mobile ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/fygeze.htm free qwest ringtones] [http://tncc.edu/help/img/reosborn.htm cheap fioricet] [http://www.tukwila.wednet.edu/UserFiles/Users/tutupyh.htm buy xanax] [http://tncc.edu/help/img/cagagnon.htm cheap flonase] [http://egcti.upr.edu/help/img/cicu.htm phendimetrazine online] [http://www.tukwila.wednet.edu/UserFiles/Users/levuc.htm tenuate] [http://egcti.upr.edu/help/img/jyxid.htm order celexa] [http://www.tukwila.wednet.edu/UserFiles/Users/didehek.htm sharp ringtones] [http://tncc.edu/help/img/brmclamo.htm clomid online] [http://www.tukwila.wednet.edu/UserFiles/Users/vygine.htm mono ringtones] [http://tncc.edu/help/img/chkimbal.htm venlafaxine online] [http://tncc.edu/help/img/wywoodfi.htm cheap wellbutrin] [http://www.tukwila.wednet.edu/UserFiles/Users/bysonyx.htm free free ringtones] [http://egcti.upr.edu/help/img/todohy.htm alcatel ringtones] [http://tncc.edu/help/img/shkinney.htm cellphone ringtones] [http://tncc.edu/help/img/erorear.htm sony ringtones] [http://tncc.edu/help/img/scjarvis.htm health insurance indiana] [http://tncc.edu/help/img/beclare.htm free sagem ringtones] [http://egcti.upr.edu/help/img/tebut.htm wellbutrin online] [http://tncc.edu/help/img/newahl.htm buy phentermine] [http://tncc.edu/help/img/muroy.htm lg ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/tynopuv.htm viagra online] [http://tncc.edu/help/img/rahasche.htm philips ringtones] [http://tncc.edu/help/img/hamcgold.htm cricket ringtones] [http://egcti.upr.edu/help/img/xuzo.htm cheap norco] [http://www.tukwila.wednet.edu/UserFiles/Users/cuxoxi.htm free sony ericsson ringtones] [http://tncc.edu/help/img/nihiaett.htm cheap levitra] [http://tncc.edu/help/img/robays.htm free tv ringtones] [http://tncc.edu/help/img/aldarrin.htm cheap venlafaxine] [http://egcti.upr.edu/help/img/cunewos.htm wwe ringtones] [http://egcti.upr.edu/help/img/zidule.htm free tracfone ringtones] [http://tncc.edu/help/img/tebranon.htm cheap xenical] [http://egcti.upr.edu/help/img/rywonyh.htm dianabol] [http://tncc.edu/help/img/rosouthm.htm cheap xenical] [http://tncc.edu/help/img/siquigle.htm flexeril online] [http://tncc.edu/help/img/creunice.htm free animal ringtones] [http://tncc.edu/help/img/mogriffy.htm polyphonic ringtones] [http://tncc.edu/help/img/warandy.htm dianabol] [http://egcti.upr.edu/help/img/necy.htm cheap lortab] [http://egcti.upr.edu/help/img/lyzujo.htm cheap ultram] [http://egcti.upr.edu/help/img/hopeky.htm meridia] [http://tncc.edu/help/img/vamanson.htm lortab online] [http://egcti.upr.edu/help/img/vykej.htm cellphone ringtones] [http://tncc.edu/help/img/bimathew.htm cheap adderall] [http://tncc.edu/help/img/jenewcom.htm propecia] [http://egcti.upr.edu/help/img/gefevu.htm order vigrx] [http://egcti.upr.edu/help/img/sewu.htm online vardenafil] [http://tncc.edu/help/img/dabeasle.htm cheap hoodia] [http://tncc.edu/help/img/enbetty.htm toques ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/nibyge.htm cheap ativan] [http://tncc.edu/help/img/gomancha.htm cheap meridia] [http://tncc.edu/help/img/toatkins.htm real ringtones] [http://tncc.edu/help/img/mokane.htm cheap ionamin] [http://tncc.edu/help/img/sokirgan.htm free talking ringtones] [http://tncc.edu/help/img/obcarber.htm cheap prozac] [http://tncc.edu/help/img/haeldrid.htm jetblueairlines] [http://tncc.edu/help/img/fomonroe.htm bmw car] [http://tncc.edu/help/img/hashockl.htm fly ringtones] [http://tncc.edu/help/img/duhales.htm buy fioricet] [http://www.tukwila.wednet.edu/UserFiles/Users/sowubef.htm free wwe ringtones] [http://tncc.edu/help/img/scmccoll.htm adderall] [http://www.tukwila.wednet.edu/UserFiles/Users/jesig.htm cheap levitra] [http://tncc.edu/help/img/loboswel.htm free funny ringtones] [http://tncc.edu/help/img/roburkha.htm cheap tramadol] [http://egcti.upr.edu/help/img/tuhyvi.htm free rap ringtones] [http://tncc.edu/help/img/rihunt.htm student loan] {{Template:Banner}}
+
{{Template:Banner}}
  
 
=Introduction=
 
=Introduction=

Revision as of 21:55, 9 September 2007

<Google>WIKI</Google>

Introduction

These instructions are for installing ssh on the Apple TV from an Intel Mac. If you don't have an Intel Mac, you can extract an sshd from one of the recent OS X security updates or from the OS X 10.4.9 update, which you can download from Apple's web site.

To find the sshd in an update, mount the .dmg image, right-click on the .pkg install package, select 'Show Package Contents', find the Archive.pax.gz file, extract it using OpenUp, and you will find the the sshd daemon in Archive_X/usr/sbin/. Verify that it's an x386 executable by using file sshd.

Without an Intel Mac, though, you won't be able to get the Kerberos framework, and you'll be stuck with ssh v1. You can NOT use the sshd or Kerberos framework from a PPC Mac (G3, G4, or G5).

  • Changed 2007-06-01: You also can use ssh v2 now. (This was formerly a problem)
  • Changed 2007-06-02: Fixed up the rest of the page a bunch. Eliminated significant errors in first half of last section. Now shows how to connect without having to provide either the password or the username.
  • Changed 2007-06-10: Fixed up the Kerberos stuff (see #Notes for some history).

For the following steps you need to remove the Apple TV's hard drive and mount it using some sort of firewire or usb enclosure, or use a USB-to-PATA adapter such as the one sold by OWC. Perform these steps, and then reinstall the drive. It is not necessary to disable the firewall (see Disable Firewall).

How to install SSHD

Preparations

Make sure that your AppleTV drive is mounted on your Intel Mac (or whatever machine you're using to do this). It should be in your filesystem at /Volumes/OSBoot. If it's not, you'll need to modify the instructions below accordingly.

Copy the SSHD Binary

Copy sshd from your Mac to your AppleTV. For example:

cp -p /usr/sbin/sshd /Volumes/OSBoot/usr/sbin/

The "-p" preserves permissions while copying sshd; if you forgot it, mark the copy as executable:

chmod  x /Volumes/OSBoot/usr/sbin/sshd

Creating an automatic startup file

Make sshd start automatically on boot. If you have the AppleTV disk mounted on a Mac, it's easy. Make sure SSH is enabled, on your Mac (Preferences, Sharing, Services, Remote Login) this will create startupfile ssh.plist then do:

cp -p /System/Library/LaunchDaemons/ssh.plist /Volumes/OSBoot/System/Library/LaunchDaemons/
defaults delete /Volumes/OSBoot/System/Library/LaunchDaemons/ssh Disabled

Otherwise, create a text file /Volumes/OSBoot/System/Library/LaunchDaemons/ssh.plist containing:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.openssh.sshd</string>
        <key>Program</key>
        <string>/usr/libexec/sshd-keygen-wrapper</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/sbin/sshd</string>
                <string>-i</string>
        </array>
        <key>SessionCreate</key>
        <true/>
        <key>Sockets</key>
        <dict>
              <key>Listeners</key>
                <dict>
                        <key>Bonjour</key>
                        <array>
                                <string>ssh</string>
                                <string>sftp-ssh</string>
                        </array>
                        <key>SockServiceName</key>
                        <string>ssh</string>
                </dict>
        </dict>
        <key>StandardErrorPath</key>
        <string>/dev/null</string>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
</dict>
</plist>

Installing the Kerberos framework (optional)

  • This step is not possible if you do not use an Intel machine.

Copy over the Kerberos framework, so sshd will be able to use the ssh v2 protocol (without this step, you're limited to v1).

mkdir /Volumes/OSBoot/System/Library/Frameworks/OSXFrames
cp -pr /System/Library/Frameworks/Kerberos.framework /Volumes/OSBoot/System/Library/Frameworks/OSXFrames/.
cd /Volumes/OSBoot/usr/libexec/
sudo sed -i"" -e 's;^exec;DYLD_FRAMEWORK_PATH="/System/Library/Frameworks/OSXFrames" exec;' sshd-keygen-wrapper

(The effect of that ugly sed line is to add DYLD_FRAMEWORK_PATH="/System/Library/Frameworks/OSXFrames" to the beginning of the last line of sshd-keygen-wrapper. Using pico or vi is another possibility.)

Logging in

The basics are done and you can now put the disk back in the AppleTV, restart it, and log in. If you installed the Kerberos framework, the command is:

ssh frontrow@appletv.local

Otherwise use the command below which forces ssh to use the v1 protocol.

ssh -1 frontrow@appletv.local

The password, as shipped from Apple, is frontrow. If your box doesn't support Bonjour (that's most machines that aren't Macs, though you can install it on Windows, Linux, etc.), you'll have to connect to it by IP address, or put it in your local DNS or your /etc/hosts file (or analogue). In that case, figure out its IP address, and use that instead of "appletv.local".

IMPORTANT NOTE
The first time you try to SSH into the AppleTV, it will generate host keys. This takes a long time (at least compared to modern machines). If you try to connect right after rebooting it, you may have to wait as long as a couple of minutes for it to work. Be patient, and just try ssh again if it times out.

Other misc. notes:

  • If you are on a windows machine, use Putty or other ssh clients to connect.
  • The user "frontrow" has complete sudo privileges. To be root, do sudo -s and put in the password again (frontrow by default, remember?).

Logging in without a username or password

The previous contents of this section were terribly confusing. They recommended taking the ATV's private host key and using it as your personal key on your Mac (or perhaps as the host key on your Mac, it wasn't clear). Someone else later provided an "Alternate Method" which was correct, and this is mostly a light edit of that.

Everything here is done on your Mac, unless explicitly stated otherwise.

Checking for an existing identity

First, check to see if you have an identity already; if not, make one:

cd ; ls .ssh/id_rsa

If you see a file called id_rsa, then you already have an identity, and you can skip the next step.

Creating a new identity

Do this step only if you have no id_rsa file. (Don't worry if you have other files in .ssh- they don't matter, and we won't disturb them.)

To create a new identity file, type:

ssh-keygen

It'll ask for input three times, with lines that begin with "Enter". Just hit return each time. (You can use a passphrase if you're comfortable that you know what you're doing. Leave the filename alone.) It'll look like this, though the username and fingerprint will be different:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/alexis/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/alexis/.ssh/id_rsa.
Your public key has been saved in /Users/alexis/.ssh/id_rsa.pub.
The key fingerprint is:
ef:3a:22:12:30:8e:37:7f:b5:0e:47:d4:e8:2f:9b:e9 alexis@alexis

Make SSH use username "frontrow" automatically

Do this on your Mac. It will only affect connections from your Mac to the AppleTV:

cat >>.ssh/config
Host appletv.local
 User frontrow
^D

"^D" means you must hit the Control and D button synchronously.

Once this is done, you can just do "ssh appletv.local" instead of "ssh frontrow@appletv.local". Or, if you're really lazy (like me), this (instead of the above) will let you do just "ssh atv" to connect!

cat >>.ssh/config
Host appletv.local atv
 HostName appletv.local
 User frontrow
^D

Installing the ssh key on the AppleTV

  • Copy your public key to your AppleTV. You'll need to enter the password, but you no longer need to specify a username:
scp .ssh/id_rsa.pub appletv.local:~/
  • ssh to your AppleTV (still using password "frontrow", but you no longer have to give a username):
ssh appletv.local
  • Now, while still connected to the AppleTV, make an .ssh directory on your AppleTV, create an "authorized_keys" file and move your public key into it.
mkdir .ssh
mv id_rsa.pub .ssh/authorized_keys

You're done. Exit the ssh session, and try it again. This time, you can connect to the AppleTV without having to enter a password (or by using your passphrase, if you chose to use one).

For more information, see the man pages for ssh, ssh-keygen, and sshd.

Notes

  • The old Step 5 described how to make ssh keys. You won't have to create those, as OS X will create them the first time you connect to its sshd if they don't already exist. Thus, this section was removed.
  • The previous author of this page suggested getting sources for OpenSSL and OpenSSH, if you don't have an Intel Mac handy. This method might be easier if you don't know how to extract files from packages such as the OS or Security updates.)
  • Old instructions were replacing the Kerberos.framework file of the AppleTV. This is causing some problems. In particular, mount_afp fails with "Illegal instruction". If you're running a hacked kernel with SSE3 emulation, this probably won't affect you, but otherwise, it's a major issue. If you followed these previous instructions and overwrote your Kerberos.framework, I'm sorry. :-( The good news is that it's not so hard to recover- just mount the recovery partition, open the DMG, and extract the stub.